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

时间: 2024-11-10 20:11:24

MUI(5)的相关文章

MUI(3)

本篇博文是继续上篇博文MUI(2).上面这幅图是博文MUI(1)中实现的效果,在博文MUI(1)中提到了2个页面,一个页面是index.html,另一个页面是index_list.html页面.上面这幅图中红色框子是index.html页面,蓝色框子是index_list.html页面.两个页面本来是独立的两个页面,但是组合在一起之后就形成了如上面这幅图所示的效果.在一个页面中显示另一个页面. 实现方法很简单, 1 <script type="text/javascript" c

MUI(2)

本篇博文是继续MUI(1)博文. 上一篇博文小编写了两个页面,一个页面只写了一个头部导航栏,另一个页面写了一个按钮,然后这两个页面进行合并显示,即在头部导航栏页面加载显示另一个页面的按钮.仔细观察上一篇的最后截图效果会发现,在头部导航栏的左上角有一个侧滑图标,本篇博文就是实现一个侧滑菜单效果. 还是继续上一篇博文中应用到的项目,只是在之前项目的基础之上新建了一个页面,index_menu.html页面.index.html页面源代码如下: 1 <!DOCTYPE html> 2 <htm

MUI(1)

今天小编用HBuilder+MUI开发移动APP,不用Android原生也不用IOS原生,仅仅用HTML5+MUI.小编也是初学者所以如有不准确的地方望大家指出帮助小编改正,同时也可以促进大家的深入学习. HBuilder的下载官网地址:http://www.dcloud.io/:MUI官网下载地址:https://www.muicss.com/. HBuilder是免费的,但是仅仅需要登录,安心注册,方向登录使用,完全免费的. 第一次启动HBuilder需要登录和简单的设置不过很easy啦.启

MUI(4)

今天感觉无聊,想听一首音乐.没有添加其他页面,只是在index_list.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,initi

MUI学习03-滚动图(幻灯片)及菜单项(九宫格)

<!--标准mui.css-->引入CSS:<link rel="stylesheet" href="../css/mui.min.css"> HTML代码如下: <!--滚动图(幻灯片)--> <div class="mui-slider "> <div class="mui-slider-group mui-slider-loop"> <!--支持循环,需要

Html5+Mui前端框架,开发记录(三):七牛云 上传图片

1.Html界面: 1 <div id="container"> 2 <label>凭证:</label> 3 <div id="uploadImage" class="mui-btn" style="float: left; margin-top: 5px;text-align: center;padding:10px;width: 100px;">选择图片 4 </di

MUI - actionsheet(操作表)、badge(数字角标)

原文地址:http://www.hcoder.net/tutorials/info_83.html 1.操作表 actionsheet一般从底部弹出,显示一系列可供用户选择的操作按钮: actionsheet是从popover控件基础上演变而来,实际上就是一个固定从底部弹出的popover,故DOM结构和popove类似,只是需要在含.mui-popover类的节点上增加.mui-popover-bottom..mui-popover-action类: <div id="sheet1&qu

学习MVC之租房网站(八)- 前台注册和登录

在上一篇<学习MVC之租房网站(七)-房源管理和配图上传>完成了在后台新增.编辑房源信息以及上传房源配图的功能.到此后台开发便告一段落了,开始实现前台的功能,也是从用户的登录.注册开始. 前台模板使用MUI,一套用于手机端的HTML5模板,但开发期间仍然使用Chrome.FireFox等PC浏览器. 一 注册 注册要求用户输入手机号密码等信息 a) 注册的处理过程为:用户输入手机号后,给手机发送验证码,用户提供收到的验证码以及密码.确认密码,随后便可以点击注册,在浏览器进行简单的有效性校验后,

学习MVC之租房网站(九)-房源显示和搜索

在上一篇<学习MVC之租房网站(八)- 前台注册和登录>完成了前台用户的注册.登录.重置密码等功能,然后要实现与业务相关的功能,包括房源的显示.检索等. 一 房源显示 房源显示内容较多,涉及到的有House.Attachment.HousePic,处理的信息包括房屋类型.朝向.楼层.装修状态.家具等. 这里显示的房源是通过后台的房源管理维护的,后台添加房源时会上传图片.使用UEditor编辑文本,前台显示房源时也要把图片和富文本显示出来.在前台使用后台上传的图片是个问题:UEditor产生的富