main.html 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312
  1. <!doctype html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>框架页</title>
  6. <meta name="viewport"
  7. content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no,viewport-fit=cover" />
  8. <!-- 引入mui样式 -->
  9. <link href="css/mui.css" rel="stylesheet" />
  10. <!-- 本页独有样式 -->
  11. <style type="text/css">
  12. html,
  13. body {
  14. height: 100%;
  15. width: 100%;
  16. }
  17. /* tab中img中normal样式 */
  18. .cr-tab-img {
  19. width: 20px;
  20. height: 20px !important;
  21. margin-top: 4px;
  22. }
  23. /* tab中标签中normal样式 */
  24. .cr-tab-label {
  25. font-size: 14px;
  26. }
  27. .mui-tab-item {
  28. height: 51px !important;
  29. }
  30. /* tabItem小标签样式 */
  31. .cr-badge {
  32. position: absolute;
  33. }
  34. /* tabItem激活文字标签样式 */
  35. .cr-active {
  36. color: rgb(140, 200, 252) !important;
  37. font-weight: bold;
  38. }
  39. /* 底部导航栏样式修正 */
  40. .mui-bar {
  41. border-top: 1px solid rgba(200, 200, 200, 1) !important;
  42. box-shadow: none !important;
  43. background-color: rgb(255, 255, 255) !important;
  44. }
  45. </style>
  46. </head>
  47. <body>
  48. <nav class="mui-bar mui-bar-tab">
  49. <a class="mui-tab-item mui-active" href="pages/main-home.html">
  50. <div normal="nav_ico_home_normal.png" active="nav_ico_home_active.png">
  51. <img src="img/nav/nav_ico_home_active.png" class="cr-tab-img" />
  52. </div>
  53. <span class="mui-tab-label">主页</span>
  54. </a>
  55. <a class="mui-tab-item" href="pages/main-message.html">
  56. <div normal="nav_ico_message_normal.png" active="nav_ico_message_active.png">
  57. <img src="img/nav/nav_ico_message_normal.png" class="cr-tab-img" />
  58. </div>
  59. <span class="mui-tab-label">消息</span>
  60. </a>
  61. <a class="mui-tab-item" href="pages/map.html">
  62. <div normal="nav_icon_map_normal.png" active="nav_icon_map_active.png">
  63. <img src="img/nav/nav_icon_map_normal.png" class="cr-tab-img" />
  64. </div>
  65. <span class="mui-tab-label">定位</span>
  66. </a>
  67. <a class="mui-tab-item" href="pages/main-address.html">
  68. <div normal="nav_ico_address_normal.png" active="nav_ico_address_active.png">
  69. <img src="img/nav/nav_ico_address_normal.png" class="cr-tab-img" />
  70. </div>
  71. <span class="mui-tab-label">通讯录</span>
  72. </a>
  73. <a class="mui-tab-item" href="pages/main-user.html">
  74. <div normal="nav_ico_user_normal.png" active="nav_ico_user_active.png">
  75. <img src="img/nav/nav_ico_user_normal.png" class="cr-tab-img" />
  76. </div>
  77. <span class="mui-tab-label">我的</span>
  78. </a>
  79. </nav>
  80. </body>
  81. </html>
  82. <!-- 引入mui脚本 -->
  83. <script src="js/mui.js" type="text/javascript" charset="utf-8"></script>
  84. <!-- 引入jQuery脚本 -->
  85. <script src="js/jquery.js" type="text/javascript" charset="utf-8"></script>
  86. <!-- 引入网络交互脚本 -->
  87. <script src="js/ajax.js" type="text/javascript" charset="utf-8"></script>
  88. <!-- 引入通用脚本 -->
  89. <script src="js/common.js" type="text/javascript" charset="utf-8"></script>
  90. <!-- 引入存储脚本 -->
  91. <script src="js/save.js" type="text/javascript" charset="utf-8"></script>
  92. <!-- 引入webview脚本 -->
  93. <script src="js/webview.js" type="text/javascript" charset="utf-8"></script>
  94. <!-- 本页独有脚本 -->
  95. <script type="text/javascript">
  96. mui.init();
  97. /* 关联子页面 */
  98. var subPages = [];
  99. subPages.push('pages/main-home.html');
  100. subPages.push('pages/main-message.html');
  101. subPages.push('pages/map.html');
  102. subPages.push('pages/map3d.html');
  103. subPages.push('pages/main-address.html');
  104. subPages.push('pages/main-user.html');
  105. /* 子页面样式 */
  106. var subPageStyle = {
  107. top: '0px',
  108. bottom: '52px',
  109. statusbar: {
  110. background: colorBackground,
  111. }
  112. };
  113. var aniShow = {};
  114. //当前激活选项
  115. var activeTab = null;
  116. /* 给所有的标签添加类 */
  117. $('.mui-tab-label').addClass('cr-tab-label');
  118. /* 默认选择tab样式 */
  119. $('.mui-tab-item.mui-active').addClass('cr-active');
  120. /* 选项卡点击事件 */
  121. mui('.mui-bar-tab').on('tap', 'a', function(e) {
  122. /* 设置 */
  123. setTabItem(this);
  124. /* 切换 */
  125. activeTabItem(this);
  126. });
  127. /**
  128. * 页面显示
  129. */
  130. UIView_DidLoad(function() {
  131. /* 取消全屏 */
  132. plus.navigator.setFullscreen(false);
  133. /* 设置状态栏文字颜色 dark 黑色 light白色 只有这两种 该处设置后 后面一直有效 */
  134. plus.navigator.setStatusBarStyle('light');
  135. /* 关闭主页 */
  136. var opener = plus.webview.currentWebview().opener();
  137. opener.close('none');
  138. pageLoad();
  139. /* 绘制一个Home中间凸起 */
  140. drawHome();
  141. })
  142. /* 中间绘制的视图 相关变量 */
  143. var view = undefined;
  144. var drawColor = 'rgba(255,255,255,1)'; //绘制颜色
  145. var roundPosition = undefined;
  146. var rectPosition = undefined;
  147. /**
  148. * 绘制一个Home中间凸起
  149. */
  150. function drawHome() {
  151. /* 绘制区域的高度 宽度 其中5是tab的数量 且必须是奇数*/
  152. var drawWidth = window.innerWidth / 5;
  153. var rectHeight = 51;
  154. var roundWidth = 80; //绘制圆的宽度
  155. var imgWidth = 60; //绘制图片的宽度
  156. /* view的位置 */
  157. var viewPosition = {
  158. bottom: '0px',
  159. height: roundWidth + 'px',
  160. width: drawWidth + 'px',
  161. left: drawWidth * 2 + 'px',
  162. };
  163. /* 圆形区域的位置 */
  164. roundPosition = {
  165. top: '1px',
  166. left: (drawWidth / 2 - roundWidth / 2) + 'px',
  167. width: roundWidth + 'px',
  168. height: (roundWidth - 2) + 'px',
  169. }
  170. /* 覆盖圆形区域的矩形位置 */
  171. rectPosition = {
  172. bottom: '0px',
  173. left: '0px',
  174. width: drawWidth + 'px',
  175. height: rectHeight + 'px',
  176. }
  177. var viewDraws = [];
  178. /* 创建view */
  179. view = new plus.nativeObj.View('test', viewPosition, viewDraws);
  180. /* 显示view */
  181. view.show();
  182. view.interceptTouchEvent(false);
  183. /* 添加此代码是为了保证Home被其他子窗口顺利遮挡 否则会一直悬着 */
  184. plus.webview.currentWebview().append(view);
  185. /* 绘制内容 */
  186. viewDraw('home_2d.png');
  187. }
  188. /**
  189. * 函数相关
  190. */
  191. /**
  192. * @param {string} imgName 在view上绘制内容 其中imgName是中心绘制的图片名称
  193. */
  194. function viewDraw(imgName) {
  195. view.reset();
  196. /* 绘制一个圆形 */
  197. view.drawRect({
  198. color: drawColor,
  199. radius: '50%',
  200. borderColor: 'rgba(200,200,200,1)',
  201. borderWidth: '1px',
  202. }, roundPosition);
  203. /* 绘制一个矩形 盖住圆的边界线 */
  204. view.drawRect({
  205. color: drawColor,
  206. }, rectPosition);
  207. /* 绘制一个图片 */
  208. var homeImg = new plus.nativeObj.Bitmap('homeImg');
  209. homeImg.load('img/home/' + imgName, function() {
  210. console.log('图片载入成功');
  211. // 绘制图片
  212. view.drawBitmap(homeImg, {
  213. top: '0px',
  214. left: '0px',
  215. width: '100%',
  216. height: '100%'
  217. }, roundPosition);
  218. }, function(e) {
  219. console.log('bmp1.png load failed! ' + JSON.stringify(e));
  220. })
  221. }
  222. /**
  223. * 激活时操作
  224. * @param {Object} tabItemObj 当前激活的TabItem
  225. */
  226. function setTabItem(tabItemObj) {
  227. var tabImgPath = 'img/nav/';
  228. /* 移除所有tab的选中样式 */
  229. $('.mui-tab-item').removeClass('cr-active');
  230. /* 给当前选中的tab添加选中样式 */
  231. $(tabItemObj).addClass('cr-active');
  232. /* 修改所有项的默认样式 */
  233. var tabs = $('.mui-bar-tab').children('.mui-tab-item');
  234. for (var i = 0; i < tabs.length; i++) {
  235. var normalSrc = $(tabs[i]).find('div').attr('normal');
  236. $(tabs[i]).find('div').find('img').attr('src', tabImgPath + normalSrc);
  237. }
  238. /* 修改选中项的样式 */
  239. var activeSrc = $(tabItemObj).find('div').attr('active');
  240. $(tabItemObj).find('div').find('img').attr('src', tabImgPath + activeSrc);
  241. }
  242. /**
  243. * 切换页面
  244. * @param {Object} tabItemObj tabItem
  245. */
  246. function activeTabItem(tabItemObj) {
  247. var targetTab = tabItemObj.getAttribute('href');
  248. if (targetTab == activeTab) {
  249. if(targetTab == 'pages/map.html' || targetTab == 'pages/map3d.html'){
  250. /* 重复点击才切换 2d或3d地图 */
  251. if (targetTab == 'pages/map.html') {
  252. //为2d地图 切换后为3d
  253. tabItemObj.setAttribute('href', 'pages/map3d.html');
  254. targetTab = 'pages/map3d.html';
  255. viewDraw('home_3d.png');
  256. } else if (targetTab == 'pages/map3d.html') {
  257. //为2d地图 切换后为3d
  258. tabItemObj.setAttribute('href', 'pages/map.html');
  259. targetTab = 'pages/map.html';
  260. viewDraw('home_2d.png');
  261. }
  262. }else{
  263. return;
  264. }
  265. }
  266. //若为iOS平台或非首次显示,则直接显示
  267. if (mui.os.ios || aniShow[targetTab]) {
  268. plus.webview.show(targetTab);
  269. } else {
  270. //否则,使用fade-in动画,且保存变量
  271. var temp = {};
  272. temp[targetTab] = "true";
  273. mui.extend(aniShow, temp);
  274. plus.webview.show(targetTab, "fade-in", 300);
  275. }
  276. //隐藏当前;
  277. plus.webview.hide(activeTab);
  278. //更改当前活跃的选项卡
  279. activeTab = targetTab;
  280. }
  281. /**
  282. * 页面初始化完成
  283. */
  284. function pageLoad() {
  285. activeTab = subPages[0];
  286. var self = plus.webview.currentWebview();
  287. /* 预加载子页面 并隐藏 */
  288. for (var i = 0; i < subPages.length; i++) {
  289. var temp = {};
  290. var subPage = plus.webview.create(subPages[i], subPages[i], subPageStyle);
  291. /* 隐藏 */
  292. subPage.hide();
  293. self.append(subPage);
  294. }
  295. /* 默认显示第一个子页面 */
  296. plus.webview.show(activeTab);
  297. }
  298. </script>