基于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 相关文章推荐
不同浏览器的怪癖小结
Jul 11 Javascript
js浮点数保留两位小数点示例代码(四舍五入)
Dec 26 Javascript
Javascript实现飞动广告效果的方法
May 25 Javascript
Jquery和JS获取ul中li标签的实现方法
Jun 02 Javascript
JavaScript数值千分位格式化的两种简单实现方法
Aug 01 Javascript
js基本算法:冒泡排序,二分查找的简单实例
Oct 08 Javascript
JS实现给对象动态添加属性的方法
Jan 05 Javascript
JS简单实现获取元素的封装操作示例
Apr 07 Javascript
Vue学习之路之登录注册实例代码
Jul 06 Javascript
JS实现的对象去重功能示例
Jun 04 Javascript
JavaScript解析JSON数据示例
Jul 16 Javascript
ReactRouter的实现方法
Jan 25 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
深入理解php的MySQL连接类
2013/06/07 PHP
MacOS 安装 PHP的图片裁剪扩展Tclip
2015/03/25 PHP
PHP面试题之文件目录操作
2015/10/15 PHP
Laravel用户授权系统的使用方法示例
2018/09/16 PHP
JQuery EasyUI 对话框的使用方法
2010/10/24 Javascript
jQuery中:checked选择器用法实例
2015/01/04 Javascript
JS实现的最简Table选项卡效果
2015/10/14 Javascript
jQuery无刷新分页完整实例代码
2015/10/27 Javascript
使用Node.js给图片加水印的方法
2016/11/15 Javascript
JS实现微信弹出搜索框 多条件查询功能
2016/12/13 Javascript
bootstrap模态框实现拖拽效果
2016/12/14 Javascript
axios基本入门用法教程
2017/03/25 Javascript
Angular4 Select选择改变事件的方法
2018/10/09 Javascript
详解keep-alive + vuex 让缓存的页面灵活起来
2019/04/19 Javascript
npm ci命令的基本使用方法
2020/09/20 Javascript
[07:20]2018DOTA2国际邀请赛寻真——逐梦Mineski
2018/08/10 DOTA
Python操作CouchDB数据库简单示例
2015/03/10 Python
详解Python中的文本处理
2015/04/11 Python
python中的lambda表达式用法详解
2016/06/22 Python
flask入门之表单的实现
2018/07/18 Python
Python生成rsa密钥对操作示例
2019/04/26 Python
Python中实现一行拆多行和多行并一行的示例代码
2020/09/06 Python
Python 中的函数装饰器和闭包详解
2021/02/06 Python
Tiqets荷兰:出售欧洲最美丽的景点和博物馆门票
2018/01/09 全球购物
法国高保真音响和家庭影院商店:Son Video
2019/04/26 全球购物
俄罗斯美容和健康网上商店:Созвездие Красоты
2019/07/23 全球购物
中专毕业生自荐信范文
2013/11/28 职场文书
千元咖啡店的创业计划书范文
2013/12/29 职场文书
校园奶茶店创业计划书
2014/01/23 职场文书
学子宴答谢词
2014/01/25 职场文书
带薪年假请假条
2014/02/04 职场文书
大学军训感想
2014/02/12 职场文书
安全生产目标管理责任书
2014/07/25 职场文书
2016年寒假社会实践活动心得体会
2015/10/09 职场文书
python opencv检测直线 cv2.HoughLinesP的实现
2021/06/18 Python
Python保存并浏览用户的历史记录
2022/04/29 Python