使用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 ...
随机推荐
- Zju1290 Word-Search Wonder(http://begin.lydsy.com/JudgeOnline/problem.php?id=2768)
2768: Zju1290 Word-Search Wonder Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 4 Solved: 2[Submit] ...
- fold change(ratio)
fold change 英文简称 : FC 中文全称 : 倍性变化 所属分类 : 生物科学 词条简介 : 一种用于描述两个用于相比的对象数量差异的方法.例如,第一个样本和第二个样本的量是50/10,那 ...
- PHP常用函数(收集)
<?php //===============================时间日期=============================== //y返回年最后两位,Y年四位数,m月份数字 ...
- vimplugin破解
必较常用的vi插件有:viplugin.Vrapper.eclim Vrapper没有用过,eclim在公司电脑上装,总是不能正常的连接gvim,所以也没有用 Viplugin,常用功能基本都有... ...
- 【HDU 5808】 Price List Strike Back (整体二分+动态规划)
Price List Strike Back There are nn shops numbered with successive integers from 11 to nn in Bytelan ...
- HTTP协议缓存策略深入详解之ETAG妙用
Etag是什么: Etag 是URL的Entity Tag,用于标示URL对象是否改变,区分不同语言和Session等等.具体内部含义是使服务器控制的,就像Cookie那样. HTTP协议规格说明定义 ...
- JSP EL表达式使用
JSP EL表达式使用: Servlet: package com.stono.servlet; import java.io.IOException; import java.util.HashMa ...
- 自用LogSystem入库分享
.mytitle { background: #2B6695; color: white; font-family: "微软雅黑", "宋体", "黑 ...
- java Runtime类
public class Test { public static void main(String[] args) throws UnsupportedEncodingException { Run ...
- iOS 获取公历、农历日期的年月日
iOS 获取公历.农历日期的年月日 介绍三种方法获取 Date (NSDate) 的年月日. 用 date 表示当前日期.测试日期为公历 2017 年 2 月 5 日,农历丁酉年,鸡年,正月初九. l ...