使用hubuild,mui开发微信app—首页(一)
写在前面
本系列文章我将介绍一下从零开始利用hubuild,mui实现微信app的开发,该系列是个人学习记录,所以在每篇文章中,都是从怎么去实现开始讲解,然后再把实例中涉及知识点做一个概述。
创建一个mui项目
HBuilder是DCloud(数字天堂)推出的一款支持HTML5的Web开发IDE,因为HBuilder内部集成了很多mui组件,所以用HBuilder可以实现mui的快速开发,在开始开发之前,我们首先需要利用HBuilder创建一个mui的项目,文件-新建-移动App,如下图:

布局篇
首页我们来看一下首页的布局,在首页中,页面可以分成三部分头部+主体部分+底部菜单,接下来我们将去讲解每一部分具体怎样实现

头部实现
在Hbuild中输入mh选择mHeader(标题栏),即可以快速生成一个app的头部,如下代码:

<header class="mui-bar mui-bar-nav">
<h1 class="mui-title">微信</h1>
</header>
底部菜单栏
在Hbuild中输入mt选择mTab(底部选项卡),即可以快速生成app的底部菜单栏,如下代码:

效果预览:

通过上面两步,我们已经基本完成了微信的头部跟底部,但是这个跟微信首页还是有一些不一样的,首先微信的头部是那种黑灰色,而我们自动生成的微信头部是白色,底部菜单栏的图标也不一致,下面我们就针对这两个做一下微调
头部样式重写:
.mui-bar-nav{
background-color: #242A2D;
}
.mui-bar-nav .mui-title{
color: #fff;
}
底部菜单栏自定义图标:
mui添加自定义图标
底部菜单栏的图标有的在mui的图标库中找不到匹配的,所以这里我们用到自定义的字体图标,字体图标可以在阿里巴巴矢量图标库中(http://www.iconfont.cn/)找到,图标找到之后全部添加入库,然后下载代码,为了统一目录,将下载下来的文件包里面的字体文件拷贝到我们项目的fonts文件夹中,将css文件拷贝到我们项目的css文件中,这里需要注意的是,拷贝之后,css中的字体css需要将路径改一下,如下图

引用自定义图标
图标找到并且按照上面的方法设置好之后,接下来我们就可以在我们的项目中引用我们的图标了,引用的时候,只需要添加.icontfont类,字体图标相关的类,如下图:

主体部分实现
在mobile app开发过程中,经常遇到卡头卡尾的页面,此时若使用局部滚动在android手机上会出现滚动不流畅的问题; mui的解决思路是:将需要滚动的区域通过单独的webview实现,完全使用原生滚动。具体做法则是:将目标页面分解为主页面和内容页面,主页面显示卡头卡尾区域,比如顶部导航、底部选项卡等;内容页面显示具体需要滚动的内容。所以接下来我们先将创建子页面的相关知识点做一个概述。
Webview
首先我们介绍一个非常重要的知识点webview,Webview模块管理应用窗口界面,实现多窗口的逻辑控制管理操作。通过plus.webview可获取应用界面管理对象。关于webviewde的详细介绍以及下面罗列知识点参数说明,可以查阅文档:http://www.html5plus.org/doc/zh_cn/webview.html
- create
create创建Webview窗口,用于加载新的HTML页面,可通过styles设置Webview窗口的样式,创建完成后需要调用show方法才能将Webview窗口显示出来。
//语法: WebviewObject plus.webview.create( url, id, styles, extras );
currentWebview
currentWebview用于获取当前窗口的WebviewObject对象
//语法 WebviewObject plus.webview.currentWebview();
- hide
根据指定的WebviewObject对象或id隐藏Webview窗口,使得窗口不可见。
//语法 void plus.webview.hide( id_wvobj, aniHide, duration, extras );
- show
示已创建或隐藏的Webview窗口,需先获取窗口对象或窗口id,并可指定显示窗口的动画及动画持续时间
//语法 void plus.webview.show( id_wvobj, aniShow, duration, showedCB, extras );
append
将另一个Webview窗口作为子窗口添加到当前Webview窗口中,添加后其所有权归父Webview窗口,当父窗口关闭时子窗口自动关闭。
void wobj.append( webview );
以上知识点只是接下来要用到的知识点,更多的关于webview的知识点可以自己查询上面链接学习
mui.plusReady()
在app开发中,若要使用HTML5+扩展api,必须等plusready事件发生后才能正常使用,mui将该事件封装成了mui.plusReady()方法,涉及到HTML5+的api,建议都写在mui.plusReady方法中。
事件绑定
除了可以使用addEventListener()方法监听某个特定元素上的事件外, 也可以使用.on()方法实现批量元素的事件绑定。在开发移动端应用的时候,单击事件是tap,而在web页面中,是click
具体实现:
首先,我们需要创建4个子页面,分别对应底部菜单栏,在本实例中四个子页面分别为'weixin.html','contact.html','find.html','own.html'。下面是创建子页面,已经实现tab切换的具体实现:
<script type="text/javascript">
var subPages=['weixin.html','contact.html','find.html','own.html']; //创建一个数组,存放子页面
var subPageStyle={
top:'44px',
bottom:'50px'
}; //subPageStyle为子页面的样式
mui.plusReady(function () {
var self=plus.webview.currentWebview(); //获取到当前窗体
for (var i=0;i<subPages.length;i++) {
var sub=plus.webview.create(subPages[i],subPages[i],subPageStyle); //创建子页面
sub.hide(); //隐藏子页面
self.append(sub); //将子页面插入到当前窗体中
}
plus.webview.show(subPages[0]);//让第一个子页面显示出来
});
mui('.mui-bar-tab').on('tap','a',function(e){
var tagPage=this.getAttribute('href');
plus.webview.show(tagPage,"fade-in",100);
}) //点击切换对应子页面
</script>
通过上面这些步骤的完成,我们基本上完成了一个微信首页的开发,也实现了底部菜单栏的切换
使用hubuild,mui开发微信app—首页(一)的更多相关文章
- 跨平台移动APP开发进阶(二)HTML5+、mui开发移动app教程
前端开发APP,从HBuilder开始~ 序 通过 HTML5 开发移动App 时,会发现HTML5 很多能力不具备.为弥补HTML5 能力的不足,在W3C 中国的指导下成立了www.HTML5Plu ...
- php开发微信APP支付接口
之前在开发APP中用到了微信支付,因为是第一次用,所以中途也遇到了好多问题,通过查看文档和搜集资料,终于完成了该功能的实现.在这里简单分享一下后台php接口的开发实例. 原文地址:代码汇个人博客 ht ...
- H5外包团队 H5开发微信APP的优势有哪些
H5外包团队 H5开发微信APP的优势有哪些
- WeX5是主要进行app开发吗?能开发微信App吗?
WeX5是一款html5开发工具,可以进行app开发,做出各种H5 App,同样也可以进行主要运行在PC的html5产品,. WeX5开发的应用,不仅可以在微信上运行,也可以直接手机浏览器运行,或者打 ...
- 开发微信App支付
1.首先到官方下载Demo,地址:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=11_1 下载后的目录结构如下:
- mui开发app之webview是什么
WebView(网络视图)能加载显示网页,可以将其视为一个浏览器,webview被封装在html5+,plus对象中,底层由java,OC实现. 先来谈谈我对webview的理解: 使用mui开发的a ...
- 利用 MUI开发app, 如何实现侧滑菜单及其主体部分上下滑动
利用mui开发APP 之侧滑菜单主内容滚动问题 MUI作为开发者常用的框架之一,其号称最接近原生APP体验的高性能前端框架.因此利用mui开发移动APP,可以为开发者提供很大的便利和接近原生的体验. ...
- mui开发webapp(2)
前端开发APP,从HBuilder开始~ 序 通过 HTML5 开发移动App 时,会发现HTML5 很多能力不具备.为弥补HTML5 能力的不足,在W3C 中国的指导下成立了www.HTML5Plu ...
- HBuilder/Mui开发ios使用上拉刷新导致滚动条无法使用的解决方法
HBuilder/Mui开发的APP使用上拉刷新,当滚动到底部是会触发上拉刷新,加载更多数据.但是ios上确是一个坑,导致滚动条无法滚动. 解决方法 放弃Mui的上拉刷新,自己使用JS实现. var ...
随机推荐
- API WAVE 专栏
关于音频输入.输出设备的使用 源:API WAVE 专栏
- 编写高质量JavaScript代码的基本要点记录
原文:深入理解JavaScript系列(1):编写高质量JavaScript代码的基本要点 1.最小全局变量(Minimizing Globals)的重要性 JavaScript通过函数管理作用域.在 ...
- C# TPL学习
程序Ⅰ:通过Task类创建新线程 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 ...
- ASP.NET常用的控件怎么添加
http://jingyan.baidu.com/article/d8072ac4224747ec95cefda2.html
- idea 15破解方法记录
So easy! Only one step. 注册时选择 License server ,填 http://idea.lanyus.com 对于Clion等同样适用.
- SQL之left join、right join、inner join
创建表(Create table): CREATE TABLE A ( Id INT PRIMARY KEY, Name VARCHAR(20) NOT NULL); CREATE TABLE B ( ...
- AC日记——统计难题 hdu 1251
统计难题 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131070/65535 K (Java/Others)Total Submi ...
- WebSocket协议再认识
WebSocket出现之前 在线聊天室.在线客服系统.评论系统.WebIM等这些应用有一个共同点,就是用户不需要去刷新浏览器就能够从服务器获得最新的数据,这就用到了推送技术. WebSocket出现之 ...
- spring mvc 注解入门示例
web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi=" ...
- Oracle中 Instr 这个函数
http://www.jb51.net/article/42369.htm sql :charindex('字符串',字段)>0 charindex('administrator',MUserI ...