基于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 相关文章推荐
IE6与IE7中,innerHTML获取param的区别
Mar 15 Javascript
jQuery选择没有colspan属性的td的代码
Jul 06 Javascript
JavaScript/jQuery 表单美化插件小结
Feb 14 Javascript
file模式访问网页时iframe高度自适应解决方案
Jan 16 Javascript
JavaScript操纵窗口的方法小结
Jun 28 Javascript
JS绘制生成花瓣效果的方法
Aug 05 Javascript
好好了解一下Cookie(强烈推荐)
Jun 14 Javascript
Bootstrap Modal对话框如何在关闭时触发事件
Dec 02 Javascript
Vue响应式添加、修改数组和对象的值
Mar 20 Javascript
JavaScript学习笔记之DOM操作实例分析
Jan 08 Javascript
javascript拖曳互换div的位置实现示例
Jun 28 Javascript
小程序自定义轮播图圆点组件
Jun 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
9个PHP开发常用功能函数小结
2011/07/15 PHP
Codeigniter实现智能裁剪图片的方法
2014/06/12 PHP
ThinkPHP添加更新标签的方法
2014/12/05 PHP
PHP文件生成的图片无法使用CDN缓存的解决方法
2015/06/20 PHP
WordPress用户登录框密码的隐藏与部分显示技巧
2015/12/31 PHP
PHP实现的自定义数组排序函数与排序类示例
2016/11/18 PHP
PHP 7安装调试工具Xdebug扩展的方法教程
2017/06/17 PHP
基于php解决json_encode中文UNICODE转码问题
2020/11/10 PHP
PHP设计模式之命令模式示例详解
2020/12/20 PHP
用YUI做了个标签浏览效果
2007/02/20 Javascript
你真的了解JavaScript吗?
2007/02/24 Javascript
推荐一些非常不错的javascript学习资源站点
2007/08/29 Javascript
javascript 定义初始化数组函数
2009/09/07 Javascript
模仿JQuery.extend函数扩展自己对象的js代码
2009/12/09 Javascript
jquery ajax同步异步的执行最终解决方案
2013/04/26 Javascript
js自动生成对象的属性示例代码
2013/10/28 Javascript
如何解决ligerUI布局时Center中的Tab高度大小
2015/11/24 Javascript
JavaScript实现的SHA-1加密算法完整实例
2016/02/02 Javascript
微信js-sdk地理位置接口用法示例
2016/10/12 Javascript
Vue.js移动端左滑删除组件的实现代码
2017/09/08 Javascript
three.js实现3D模型展示的示例代码
2017/12/31 Javascript
详解Vue2的diff算法
2021/01/06 Vue.js
[49:40]2018DOTA2亚洲邀请赛小组赛 A组加赛 TNC vs Newbee
2018/04/03 DOTA
python实现简单socket通信的方法
2016/04/19 Python
基于Python实现定时自动给微信好友发送天气预报
2018/10/25 Python
CentOS下Python3的安装及创建虚拟环境的方法
2018/11/28 Python
python 杀死自身进程的实现方法
2019/07/01 Python
在Keras中实现保存和加载权重及模型结构
2020/06/15 Python
使用html5新特性轻松监听任何App自带返回键的示例
2018/03/13 HTML / CSS
环境科学专业大学生自荐信格式
2013/09/21 职场文书
高二英语教学反思
2014/01/19 职场文书
保护环境建议书100字
2014/05/13 职场文书
法语专业求职信
2014/07/20 职场文书
物业工程部经理岗位职责
2015/04/09 职场文书
劳动者解除劳动合同通知书
2015/04/16 职场文书
配置Kubernetes外网访问集群
2022/03/31 Servers