基于iScroll实现下拉刷新和上滑加载效果


Posted in Javascript onJuly 18, 2017

本文实例为大家分享了iScroll下拉刷新上滑加载展示的具体代码,供大家参考,具体内容如下

html代码:

<!DOCTYPE html> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0;" /> 
<title>iScroll下拉刷新上滑加载</title> 
<link rel="stylesheet" href="style/main.css"/> 
</head> 
<body> 
 
<div class="header">header</div> 
<div id="wrapper"> 
 <div id="scroller"> 
 <div id="pullDown"> 
  <span class="pullDownLabel">下拉刷新</span> 
 </div> 
 <ul id="thelist"> 
  <!--<li>原始数据</li>--> 
 </ul> 
 <div id="pullUp"> 
  <span class="pullUpLabel">上拉加载更多</span> 
 </div> 
 </div> 
</div> 
<div class="footer">footer</div> 
 
<script type="text/javascript" src="script/iscroll.js"></script> 
<script type="text/javascript" src="script/main.js"></script> 
 
</body> 
</html>

css代码:

body,ul,li {padding:0;margin:0;border:0} 
body {font-size:12px;font-family:microsoft yahei} 
 
.header {position:absolute;top:0; left:0;width:100%;height:45px;line-height:45px;font-size:16px;text-align:center;background:#e6e6e6} 
.footer {position:absolute;bottom:0; left:0;width:100%;height:48px;line-height:48px;font-size:16px;text-align:center;background:#e6e6e6} 
 
#wrapper {position:absolute;top:45px; bottom:48px;left:0;width:100%} 
#scroller li {padding:0 10px;height:60px;line-height:60px;background:#ecf6ff;margin-top:10px} 
#pullDown, #pullUp {padding:0 10px;height:30px;line-height:30px;color:#888;text-align:center}

js代码:

var myScroll,pullDownEl, pullDownOffset,pullUpEl, pullUpOffset,generatedCount = 0; 
 
function loaded() { 
 //动画部分 
 pullDownEl = document.getElementById('pullDown'); 
 pullDownOffset = pullDownEl.offsetHeight; 
 pullUpEl = document.getElementById('pullUp'); 
 pullUpOffset = pullUpEl.offsetHeight; 
 myScroll = new iScroll('wrapper', { 
 useTransition: true, 
 topOffset: pullDownOffset, 
 onRefresh: function () { 
  if (pullDownEl.className.match('loading')) { 
  pullDownEl.className = ''; 
  pullDownEl.querySelector('.pullDownLabel').innerHTML = '下拉刷新'; 
  } else if (pullUpEl.className.match('loading')) { 
  pullUpEl.className = ''; 
  pullUpEl.querySelector('.pullUpLabel').innerHTML = '上拉加载更多'; 
  } 
 }, 
 onScrollMove: function () { 
  
  if (this.y > 5 && !pullDownEl.className.match('flip')) { 
  pullDownEl.className = 'flip'; 
  pullDownEl.querySelector('.pullDownLabel').innerHTML = '释放刷新'; 
  this.minScrollY = 0; 
  } else if (this.y < 5 && pullDownEl.className.match('flip')) { 
  pullDownEl.className = ''; 
  pullDownEl.querySelector('.pullDownLabel').innerHTML = 'Pull down to refresh...'; 
  this.minScrollY = -pullDownOffset; 
  } else if (this.y < (this.maxScrollY - 5) && !pullUpEl.className.match('flip')) { 
  pullUpEl.className = 'flip'; 
  pullUpEl.querySelector('.pullUpLabel').innerHTML = '释放刷新'; 
  this.maxScrollY = this.maxScrollY; 
  } else if (this.y > (this.maxScrollY + 5) && pullUpEl.className.match('flip')) { 
  pullUpEl.className = ''; 
  pullUpEl.querySelector('.pullUpLabel').innerHTML = 'Pull up to load more...'; 
  this.maxScrollY = pullUpOffset; 
  } 
 }, 
 onScrollEnd: function () { 
  if (pullDownEl.className.match('flip')) { 
  pullDownEl.className = 'loading'; 
  pullDownEl.querySelector('.pullDownLabel').innerHTML = '加载中';   
  pullDownAction(); // Execute custom function (ajax call?) 
  } else if (pullUpEl.className.match('flip')) { 
  pullUpEl.className = 'loading'; 
  pullUpEl.querySelector('.pullUpLabel').innerHTML = '加载中';   
  pullUpAction(); // Execute custom function (ajax call?) 
  } 
 } 
 }); 
 
 loadAction(); 
} 
document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false);//阻止冒泡 
document.addEventListener('DOMContentLoaded', function () { setTimeout(loaded, 0); }, false); 
 
//初始状态,加载数据 
function loadAction(){ 
 var el, li; 
 el = document.getElementById('thelist'); 
 for (i=0; i<10; i++) { 
 li = document.createElement('li'); 
 li.innerText = '初始数据--' + (++generatedCount); 
 el.appendChild(li, el.childNodes[0]); 
 } 
 myScroll.refresh(); 
} 
 
//下拉刷新当前数据 
function pullDownAction () { 
 setTimeout(function () { 
 //这里执行刷新操作 
  
 myScroll.refresh(); 
 }, 400); 
} 
 
//上拉加载更多数据 
function pullUpAction () { 
 setTimeout(function () { 
 var el, li; 
 el = document.getElementById('thelist'); 
 for (i=0; i<10; i++) { 
  li = document.createElement('li'); 
  li.innerText = '上拉加载--' + (++generatedCount); 
  el.appendChild(li, el.childNodes[0]); 
 } 
 myScroll.refresh(); 
 }, 400); 
}

示例:

demo地址:http://test.ixiewei.com/iscroll-4-demo

下载地址:iScroll下拉刷新上滑加载

截图:

基于iScroll实现下拉刷新和上滑加载效果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
利用jQuery 实现GridView异步排序、分页的代码
Feb 06 Javascript
javascript 模式设计之工厂模式详细说明
May 10 Javascript
jQuery对象的length属性用法实例
Dec 27 Javascript
js在指定位置增加节点函数insertBefore()用法实例
Jan 12 Javascript
js仿网易表单及时验证功能
Mar 07 Javascript
jquery.form.js异步提交表单详解
Apr 25 jQuery
详解vue中computed 和 watch的异同
Jun 30 Javascript
Node.js中sequelize时区的配置方法
Dec 10 Javascript
手写Node静态资源服务器的实现方法
Mar 20 Javascript
浅谈如何通过node.js对数据进行MD5加密
May 16 Javascript
让 babel webpack vue 配置文件支持智能提示的方法
Jun 22 Javascript
图解JS原型和原型链实现原理
Sep 15 Javascript
jQuery remove()过滤被删除的元素(推荐)
Jul 18 #jQuery
H5基于iScroll实现下拉刷新和上拉加载更多
Jul 18 #Javascript
iscroll动态加载数据完美解决方法
Jul 18 #Javascript
Angular4学习笔记之新建项目的方法
Jul 18 #Javascript
详解使用nvm安装node.js
Jul 18 #Javascript
jQuery之动画ajax事件(实例讲解)
Jul 18 #jQuery
js判断用户是输入的地址请求的路径(实例讲解)
Jul 18 #Javascript
You might like
CodeIgniter连贯操作的底层原理分析
2016/05/17 PHP
一个简单安全的PHP验证码类 附调用方法
2016/06/24 PHP
自己动手开发jQuery插件教程
2011/08/25 Javascript
nodejs win7下安装方法
2012/05/24 NodeJs
javascript实现表单提交后,提交按钮不可用的方法
2015/04/18 Javascript
node.js学习之base64编码解码
2016/10/21 Javascript
jQuery-mobile事件监听与用法详解
2016/11/23 Javascript
jQuery实现点击关注和取消功能
2017/07/03 jQuery
jQuery解析json格式数据示例
2018/09/01 jQuery
Vue filter格式化时间戳时间成标准日期格式的方法
2018/09/16 Javascript
javaScript实现游戏倒计时功能
2018/11/17 Javascript
用node撸一个监测复联4开售短信提醒的实现代码
2019/04/10 Javascript
jQuery删除/清空指定元素的所有子节点实例代码
2019/07/04 jQuery
pycharm 使用心得(三)Hello world!
2014/06/05 Python
举例讲解Python中装饰器的用法
2015/04/27 Python
Django小白教程之Django用户注册与登录
2016/04/22 Python
基于python元祖与字典与集合的粗浅认识
2017/08/23 Python
Python3删除排序数组中重复项的方法分析
2019/01/31 Python
python实现在函数图像上添加文字和标注的方法
2019/07/08 Python
python多线程并发及测试框架案例
2019/10/15 Python
利用Python产生加密表和解密表的实现方法
2019/10/15 Python
python定时任务 sched模块用法实例
2019/11/04 Python
python对Excel按条件进行内容补充(推荐)
2019/11/24 Python
Python基于进程池实现多进程过程解析
2020/04/30 Python
全球最大的跑步用品商店:Road Runner Sports
2016/09/11 全球购物
iHerb台湾:维生素、保健品和健康产品
2018/01/31 全球购物
美国NBA官方商店:NBA Store
2019/04/12 全球购物
Probikekit欧盟:在线公路自行车专家
2019/07/12 全球购物
财务助理岗位职责
2013/11/10 职场文书
技术学校毕业生求职信分享
2013/12/02 职场文书
开业主持词
2014/03/21 职场文书
企业财务人员岗位职责
2015/04/14 职场文书
Nginx服务器添加Systemd自定义服务过程解析
2021/03/31 Servers
关于使用Redisson订阅数问题
2022/01/18 Redis
Vue.js中v-bind指令的用法介绍
2022/03/13 Vue.js
剑指Offer之Java算法习题精讲二叉树专项训练
2022/03/21 Java/Android