在做手机页面的时候我用的是MUI封装好的JavaScript。
为了实现下拉刷新的功能,大多数H5框架都是通过DIV模拟下拉回弹动画,在Android手机上,DIV动画常常会出现卡顿现象,mui通过使用原生webview下拉刷新解决DIV动画的卡顿问题,使拖动效果更加流畅。
使用双webview模式的下拉刷新,创建一个子webview添加列表,拖动时,拖动的是一个完整的webview,避免了类似DIV拖动流畅不好的卡顿问题,回弹动画使用原生动画。
代码:
主页面内容比较简单,只需要创建子页面即可:
mui.init({
subpages:[{
url:pullrefresh-subpage-url,//下拉刷新内容页面地址
id:pullrefresh-subpage-id,//内容页面标志
styles:{
top:subpage-top-position,//内容页面顶部位置,需根据实际页面布局计算,若使用标准mui导航,顶部默认为48px;
.....//其它参数定义
}
}]
});
内容页面:
<!--下拉刷新容器-->
<div id="refreshContainer" class="mui-content mui-scroll-wrapper">
<div class="mui-scroll">
<!--数据列表-->
<ul class="mui-table-view mui-table-view-chevron">
</ul>
</div>
</div>
通过mui.init方法中pullrefresh参数配置下拉刷新的各项参数:
mui.init({
pullRefresh : {
container:"#refreshContainer",//下拉刷新容器标识,querySelector能定位的css选择器均可,比如:id、.class等
down : {
height:50,//可选,默认50.触发下拉刷新拖动距离,
auto: true,//可选,默认false.首次加载自动下拉刷新一次
contentdown : "下拉可以刷新",//可选,在下拉可刷新状态时,下拉刷新控件上显示的标题内容
contentover : "释放立即刷新",//可选,在释放可刷新状态时,下拉刷新控件上显示的标题内容
contentrefresh : "正在刷新...",//可选,正在刷新状态时,下拉刷新控件上显示的标题内容
callback :pullfresh-function //必选,刷新函数,根据具体业务来编写,比如通过ajax从服务器获取新数据;
}
}
});
优点:可以自定义下拉刷新的样式,更改文字等。
缺点:相比单webview,性能消耗更大,不过比DIV模式的好用。