为实现下拉刷新功能,大多H5框架都是通过DIV模拟下拉回弹动画,在低端android手机上,DIV动画经常出现卡顿现象(特别是图文列表的情况); 通过双webview解决这个DIV的拖动流畅度问题;拖动时,拖动的不是div,而是一个完整的webview(子webview),回弹动画使用原生动画;在iOS平台,H5的动画已经比较流畅,故依然使用H5方案。两个平台实现虽有差异,但经过封装,可使用一套代码实现下拉刷新。
第一步: 创建子页面,因为拖动的其实是个子页面的整体
```
mui.init({
subpages:[{
url:pullrefresh-subpage-url,//下拉刷新内容页面地址
id:pullrefresh-subpage-id,//内容页面标志
styles:{ top:subpage-top-position,//内容页面顶部位置,需根据实际页面布局计算,若使用标准mui导航,顶部默认为48px; .....//其它参数定义
}
}]
});
```
第二步:内容页面需按照如下DOM结构构建
```
<!--下拉刷新容器-->
<div id="pullrefresh" class="mui-content mui-scroll-wrapper">
<div class="mui-scroll">
<!--数据列表-->
<ul class="mui-table-view mui-table-view-chevron">
<li class="mui-table-view-cell">1</li>
</ul>
</div>
</div>
```
第三步:通过mui.init方法中pullRefresh参数配置下拉刷新各项参数
```
mui.init({
pullRefresh : {
container:"#pullrefresh",//下拉刷新容器标识,querySelector能定位的css选择器均可,比如:id、.class等
down : {
contentdown : "下拉可以刷新",//可选,在下拉可刷新状态时,下拉刷新控件上显示的标题内容
contentover : "释放立即刷新",//可选,在释放可刷新状态时,下拉刷新控件上显示的标题内容
contentrefresh : "正在刷新...",//可选,正在刷新状态时,下拉刷新控件上显示的标题内容
callback : fn //必选,刷新函数,根据具体业务来编写,比如通过ajax从服务器获取新数据;
} }
});
```
第四步:设置执行函数
```
function fn() {
//业务逻辑代码,比如通过ajax从服务器获取新数据; ...... //注意,加载完新数据后,必须执行如下代码,注意:若为ajax请求,则需将如下代码放置在处理完ajax响应数据之后
mui('#pullrefresh').pullRefresh().endPulldownToRefresh(); //这行代码会隐藏掉 正在加载... 容器
}
```
- 界面初始化
- H5plus初始化
- 创建子页面
- 打开界面
- 参数传递
- 控制页面load显示
- 关闭界面
- 底部导航切换界面
- 自定义事件
- 页面预加载
- 消息框
- 原生模式ActionSheet
- 下拉刷新
- 上拉加载
- 上拉下拉整合
- 手势
- 遮罩
- 滑动导航选择
- 图片轮播
- 扩展-自定义导航
- Ajax-get请求
- Ajax-post请求
- 照相机
- 访问相册
- 蜂鸣提示音
- 手机震动
- 弹出菜单
- 设备信息
- 手机信息
- 发送短信
- 拨打电话
- 发送邮件
- 本地存储
- 图片上传
- 地理位置
- 设置IOS状态栏
- 手机通讯录
- 启动页设置
- PHP后台搭建
- JSON转换
- 隐藏本页面中滚动条
- 首次启动欢迎页
- 数据库增删改查和接口
- 推送
- 浏览器打开新页面
- PDF浏览
- 自定义下拉刷新
- 即时聊天
- 双击安卓返回键退出
- QQ登录