MUI(5)

今天實現9宮格菜單。先上效果圖:
javascript

就是這個效果咯,界面不太美觀,底部導航欄是爲了蘋果用戶沒有返回按鍵設計的,只是爲了方便演示而已,沒有作過多的處理。
首先先說一下這個底部導航欄如何實現,這個底部導航欄小編我寫在了主頁面index.html中,下面附上代碼:css

1 <!-- 底部nav開始 -->
2 <nav class="mui-bar mui-bar-tab">
3     <a id="goBack" class="mui-tab-item mui-active">
4         <span class="mui-icon mui-icon-back"></span>
5         <span class="mui-tab-label">返回</span>
6     </a>
7 </nav>
8 <!-- 底部nav結束 -->

注意到底部導航欄a標籤有個id:「goBack」,存在即合理,這個id不會是空穴來風的啦。是爲了實現點擊返回到主頁面的功能而存在的,舉個例子,主頁面加載9宮格,隨便點擊進入一個格子內,怎麼返回到主頁面呢?安卓機有返回按鍵,可是蘋果機用戶呢?沒有返回按鍵,因此爲了考慮到蘋果用戶,特地設置了一個返回按鈕提供實現返回主頁面的功能。html

 1 //返回上一頁
 2             document.getElementById("goBack").addEventListener('tap', function() {
 3                 var webs = plus.webview.all();
 4                 var k = webs.length;
 5                 if(k > 1) {
 6                     for(i = k - 1; i > 0; i--) {
 7                         if(webs[i].id.indexOf('tlwtt_') != -1) {
 8                             webs[i].hide('none');
 9                         } else {
10 
11                         }
12                     }
13                 }
14             });

注意到上面這串代碼的第7行會發現webs[i].id.indexOf('tlwtt_'),存在即合理。聽小編慢慢道來哈,首先咱們看到的主界面,其實是由兩個頁面組合而成的,index.html和index_list.html頁面,前面的博文有提到。若是沒有字符串匹配的話,那麼當咱們在咱們看到的主界面點擊返回的時候,會返回到index.html頁面,這個頁面只有一個頭部導航欄,這就很尷尬了。因此爲了避免能返回到index.html,特地設置id前綴。
實現9宮格效果,小編新建了一個頁面爲:grid_default.html頁面,而後將index.html頁面作一下修改,修改內容以下:java

 1 /**
 2              * 加載另外一個頁面
 3              * */
 4             mui.init({
 5                 subpages: [{
 6                     url: "html/grid_default.html", //子頁面HTML地址,支持本地地址和網絡地址
 7                     id: "index_list", //子頁面標誌
 8                     styles: {
 9                         top: '45px', //子頁面頂部位置,mui標題欄默認高度爲45px
10                         bottom: '50px' //子頁面底部位置,默認爲0px,可不定義
11                     }
12                 }]
13             });

修改部分爲上面這串代碼的第6行,以前是index_list.html頁面。
新頁面grid_default.html頁面代碼以下:web

  1 <!doctype html>
  2 <html>
  3 
  4     <head>
  5         <meta charset="UTF-8">
  6         <title></title>
  7         <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
  8         <link href="../css/mui.min.css" rel="stylesheet" />
  9     </head>
 10 
 11     <body>
 12         <div class="mui-content">
 13             <ul class="mui-table-view mui-grid-view mui-grid-9" style="margin-top: 0px;margin-bottom: 50px;">
 14                 <li id="home" class="mui-table-view-cell mui-media mui-col-xs-4 mui-col-sm-3">
 15                     <a href="#">
 16                         <span class="mui-icon mui-icon-home"></span>
 17                         <div class="mui-media-body">Home</div>
 18                     </a>
 19                 </li>
 20                 <li id="email" class="mui-table-view-cell mui-media mui-col-xs-4 mui-col-sm-3">
 21                     <a href="#">
 22                         <span class="mui-icon mui-icon-email"><span class="mui-badge">5</span></span>
 23                         <div class="mui-media-body">Email</div>
 24                     </a>
 25                 </li>
 26                 <li id="chat" class="mui-table-view-cell mui-media mui-col-xs-4 mui-col-sm-3">
 27                     <a href="#">
 28                         <span class="mui-icon mui-icon-chatbubble"></span>
 29                         <div class="mui-media-body">Chat</div>
 30                     </a>
 31                 </li>
 32                 <li id="location" class="mui-table-view-cell mui-media mui-col-xs-4 mui-col-sm-3">
 33                     <a href="#">
 34                         <span class="mui-icon mui-icon-location"></span>
 35                         <div class="mui-media-body">location</div>
 36                     </a>
 37                 </li>
 38                 <li id="search" class="mui-table-view-cell mui-media mui-col-xs-4 mui-col-sm-3">
 39                     <a href="#">
 40                         <span class="mui-icon mui-icon-search"></span>
 41                         <div class="mui-media-body">Search</div>
 42                     </a>
 43                 </li>
 44                 <li id="phone" class="mui-table-view-cell mui-media mui-col-xs-4 mui-col-sm-3">
 45                     <a href="#">
 46                         <span class="mui-icon mui-icon-phone"></span>
 47                         <div class="mui-media-body">Phone</div>
 48                     </a>
 49                 </li>
 50                 <li id="setting" class="mui-table-view-cell mui-media mui-col-xs-4 mui-col-sm-3">
 51                     <a href="#">
 52                         <span class="mui-icon mui-icon-gear"></span>
 53                         <div class="mui-media-body">Setting</div>
 54                     </a>
 55                 </li>
 56                 <li id="about" class="mui-table-view-cell mui-media mui-col-xs-4 mui-col-sm-3">
 57                     <a href="#">
 58                         <span class="mui-icon mui-icon-info"></span>
 59                         <div class="mui-media-body">about</div>
 60                     </a>
 61                 </li>
 62                 <li id="more" class="mui-table-view-cell mui-media mui-col-xs-4 mui-col-sm-3">
 63                     <a href="#">
 64                         <span class="mui-icon mui-icon-more"></span>
 65                         <div class="mui-media-body">more</div>
 66                     </a>
 67                 </li>
 68             </ul>
 69         </div>
 70         <script src="../js/mui.min.js"></script>
 71         <script type="text/javascript">
 72             mui.init();
 73             // 擴展API加載完畢後調用onPlusReady回調函數
 74             document.addEventListener('plusready', onPlusReady, false);
 75             // 擴展API加載完畢,如今能夠正常調用擴展API
 76             function onPlusReady() {}
 77             var myUrl = "tlwtt_";
 78             //Home
 79             document.getElementById("home").addEventListener('tap', function() {
 80                 mui.openWindow({
 81                     url: "home.html", //新頁面地址
 82                     id: myUrl + "home", //新頁面id
 83                     styles: {
 84                         top: '45px', //新頁面距離頂部位置
 85                         bottom: '50px' //新頁面距離底部位置
 86 
 87                     },
 88                     show: {
 89                         autoShow: true, //頁面loaded事件發生後自動提示,默認爲true
 90                         aniShow: "slide-in-right", //頁面顯示動畫,默認爲「slide-in-right」
 91                         duration: 100 //頁面動畫持續時間,Android平臺默認100毫秒,iOS平臺默認200毫秒
 92                     },
 93                     waiting: {
 94                         autoShow: true, //自動顯示等待框,默認爲true
 95                         title: '正在加載...' //等待對話框上顯示的提示內容
 96                     }
 97                 });
 98             });
 99             //Email
100             document.getElementById("email").addEventListener('tap', function() {
101                 mui.openWindow({
102                     url: "email.html",
103                     id: myUrl + "email",
104                     styles: {
105                         top: '45px',
106                         bottom: '50px'
107                     }
108                 });
109             });
110             //Chat
111             document.getElementById("chat").addEventListener('tap', function() {
112                 mui.openWindow({
113                     url: "chat.html",
114                     id: myUrl + "chat",
115                     styles: {
116                         top: '45px',
117                         bottom: '50px'
118                     }
119                 });
120             });
121             //location
122             document.getElementById("location").addEventListener('tap', function() {
123                 mui.openWindow({
124                     url: "location.html",
125                     id: myUrl + "location",
126                     styles: {
127                         top: '45px',
128                         bottom: '50px'
129                     }
130                 });
131             });
132             //Search
133             document.getElementById("search").addEventListener('tap', function() {
134                 mui.openWindow({
135                     url: "search.html",
136                     id: myUrl + "search",
137                     styles: {
138                         top: '45px',
139                         bottom: '50px'
140                     }
141                 });
142             });
143             //Phone
144             document.getElementById("phone").addEventListener('tap', function() {
145                 mui.openWindow({
146                     url: "phone.html",
147                     id: myUrl + "phone",
148                     styles: {
149                         top: '45px',
150                         bottom: '50px'
151                     }
152                 });
153             });
154             //Setting
155             document.getElementById("setting").addEventListener('tap', function() {
156                 mui.openWindow({
157                     url: "setting.html",
158                     id: myUrl + "setting",
159                     styles: {
160                         top: '45px',
161                         bottom: '50px'
162                     }
163                 });
164             });
165             //about
166             document.getElementById("about").addEventListener('tap', function() {
167                 mui.openWindow({
168                     url: "about.html",
169                     id: myUrl + "about",
170                     styles: {
171                         top: '45px',
172                         bottom: '50px'
173                     }
174                 });
175             });
176             //more
177             document.getElementById("more").addEventListener('tap', function() {
178                 mui.openWindow({
179                     url: "more.html",
180                     id: myUrl + "more",
181                     styles: {
182                         top: '45px',
183                         bottom: '50px'
184                     }
185                 });
186             });
187         </script>
188     </body>
189 
190 </html>

9宮格是<ul><li>實現,每個圖標均是一個<li>,那麼給9宮格中的<li>賦予一個id值,而後監聽tap事件,打開相應的頁面。注意了,爲了不將index.html頁面的頭部導航欄以及底部導航欄遮蓋住,因此須要設置styles,即:瀏覽器

styles: {
                         top: '45px',
                         bottom: '50px'
                     }

這麼作的目的是讓其在界面中間部位顯示出來。
提示一下,這幾行代碼必定要注意不要忘記:網絡

1 mui.init();
2             // 擴展API加載完畢後調用onPlusReady回調函數
3             document.addEventListener('plusready', onPlusReady, false);
4             // 擴展API加載完畢,如今能夠正常調用擴展API
5             function onPlusReady() {}

爲了不返回到index.html頁面,小編加了一個id前綴,將其加在了grid_default.html頁面中,以下所示:ide

 1 var myUrl = "tlwtt_";
 2             //Home
 3             document.getElementById("home").addEventListener('tap', function() {
 4                 mui.openWindow({
 5                     url: "home.html", //新頁面地址
 6                     id: myUrl + "home", //新頁面id
 7                     styles: {
 8                         top: '45px', //新頁面距離頂部位置
 9                         bottom: '50px' //新頁面距離底部位置
10 
11                     },
12                     show: {
13                         autoShow: true, //頁面loaded事件發生後自動提示,默認爲true
14                         aniShow: "slide-in-right", //頁面顯示動畫,默認爲「slide-in-right」
15                         duration: 100 //頁面動畫持續時間,Android平臺默認100毫秒,iOS平臺默認200毫秒
16                     },
17                     waiting: {
18                         autoShow: true, //自動顯示等待框,默認爲true
19                         title: '正在加載...' //等待對話框上顯示的提示內容
20                     }
21                 });
22             });

上面這串代碼中的第一行就是id前綴,第6行代碼有顯示,已經添加了id前綴,這個home格子的tap事件實現效果,後面的tap事件,小編沒有寫show,waiting什麼的,若是寫的話,參照home便可。關於打開新頁面,官方文檔中這麼描述:(官方文檔地址:http://dev.dcloud.net.cn/mui/window/#openwindow),爲了方便查看,小編給你們截圖哈,由於小編髮現若是複製文字的話,可能會由於排版問題致使錯亂,不方便閱讀。
函數

若是在其餘地方看到小編的這篇博文,若是發現圖片帶有水印,不方便閱讀的話,能夠來小編博文的首發站點來查看,小編不加水印是爲了方便閱讀,可是一些其餘站點轉載後卻自行加上了其網站水印,雖然防盜了,可是卻影響力讀者閱讀,因小失大。小編目前博文首發站點是博客園,進入博客園官網,在瀏覽器地址欄輸入tenglongwentian,以後按鍵盤迴車鍵便可看到小編的博文了。
回到正題,上面的這幅截圖是官方文檔的部份內容截圖,閱讀官方文檔實際上是個好習慣哈,慢慢培養哈,會有好處的。
測試

上面這幅圖就是點擊9宮格界面第一個格子home後的效果,其餘格子效果相似。頭部導航和底部導航均沒有被遮蓋住哈,點擊底部導航返回便可返回到主界面:

測試機型參數:Android4.2.2版本。

相關文章
相關標籤/搜索