zoukankan      html  css  js  c++  java
  • MUI(5)

    今天实现9宫格菜单。先上效果图:

    就是这个效果咯,界面不太美观,底部导航栏是为了苹果用户没有返回按键设计的,只是为了方便演示而已,没有做过多的处理。
    首先先说一下这个底部导航栏如何实现,这个底部导航栏小编我写在了主页面index.html中,下面附上代码:

    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宫格,随便点击进入一个格子内,怎么返回到主页面呢?安卓机有返回按键,但是苹果机用户呢?没有返回按键,所以为了考虑到苹果用户,特意设置了一个返回按钮提供实现返回主页面的功能。

     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页面做一下修改,修改内容如下:

     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页面代码如下:

      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页面中,如下所示:

     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版本。

  • 相关阅读:
    时间复杂度的分析
    插入排序
    maven中jar、war、pom的区别
    Maven属性(properties)标签的使用
    超级POM
    maven 常用命令
    Maven Pom文件标签详解
    maven 查找依赖的办法
    maven snapshot和release版本的区别
    maven pom文件标签含义
  • 原文地址:https://www.cnblogs.com/tenglongwentian/p/5699262.html
Copyright © 2011-2022 走看看