iscroll 滚动刷新

一个拉动刷新的例子

演示 :http://cubiq.org/dropbox/iscroll4/examples/pull-to-refresh/

源码如下

<script type="text/javascript" src="../../src/iscroll.js"></script>

<script type="text/javascript">

var myScroll,
	pullDownEl, pullDownOffset,
	pullUpEl, pullUpOffset,
	generatedCount = 0;

function pullDownAction () {
	setTimeout(function () {	// <-- Simulate network congestion, remove setTimeout from production!
		var el, li, i;
		el = document.getElementById(‘thelist‘);

		for (i=0; i<3; i++) {
			li = document.createElement(‘li‘);
			li.innerText = ‘Generated row ‘ + (++generatedCount);
			el.insertBefore(li, el.childNodes[0]);
		}

		myScroll.refresh();		// Remember to refresh when contents are loaded (ie: on ajax completion)
	}, 1000);	// <-- Simulate network congestion, remove setTimeout from production!
}

function pullUpAction () {
	setTimeout(function () {	// <-- Simulate network congestion, remove setTimeout from production!
		var el, li, i;
		el = document.getElementById(‘thelist‘);

		for (i=0; i<3; i++) {
			li = document.createElement(‘li‘);
			li.innerText = ‘Generated row ‘ + (++generatedCount);
			el.appendChild(li, el.childNodes[0]);
		}

		myScroll.refresh();		// Remember to refresh when contents are loaded (ie: on ajax completion)
	}, 1000);	// <-- Simulate network congestion, remove setTimeout from production!
}

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 = ‘Pull down to refresh...‘;
			} else if (pullUpEl.className.match(‘loading‘)) {
				pullUpEl.className = ‘‘;
				pullUpEl.querySelector(‘.pullUpLabel‘).innerHTML = ‘Pull up to load more...‘;
			}
		},
		onScrollMove: function () {
			if (this.y > 5 && !pullDownEl.className.match(‘flip‘)) {
				pullDownEl.className = ‘flip‘;
				pullDownEl.querySelector(‘.pullDownLabel‘).innerHTML = ‘Release to refresh...‘;
				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 = ‘Release to refresh...‘;
				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 = ‘Loading...‘;
				pullDownAction();	// Execute custom function (ajax call?)
			} else if (pullUpEl.className.match(‘flip‘)) {
				pullUpEl.className = ‘loading‘;
				pullUpEl.querySelector(‘.pullUpLabel‘).innerHTML = ‘Loading...‘;
				pullUpAction();	// Execute custom function (ajax call?)
			}
		}
	});

	setTimeout(function () { document.getElementById(‘wrapper‘).style.left = ‘0‘; }, 800);
}

document.addEventListener(‘touchmove‘, function (e) { e.preventDefault(); }, false);

document.addEventListener(‘DOMContentLoaded‘, function () { setTimeout(loaded, 200); }, false);
</script>

<style type="text/css" media="all">
body,ul,li {
	padding:0;
	margin:0;
	border:0;
}

body {
	font-size:12px;
	-webkit-user-select:none;
    -webkit-text-size-adjust:none;
	font-family:helvetica;
}

#header {
	position:absolute; z-index:2;
	top:0; left:0;
	width:100%;
	height:45px;
	line-height:45px;
	background-color:#d51875;
	background-image:-webkit-gradient(linear, 0 0, 0 100%, color-stop(0, #fe96c9), color-stop(0.05, #d51875), color-stop(1, #7b0a2e));
	background-image:-moz-linear-gradient(top, #fe96c9, #d51875 5%, #7b0a2e);
	background-image:-o-linear-gradient(top, #fe96c9, #d51875 5%, #7b0a2e);
	padding:0;
	color:#eee;
	font-size:20px;
	text-align:center;
}

#header a {
	color:#f3f3f3;
	text-decoration:none;
	font-weight:bold;
	text-shadow:0 -1px 0 rgba(0,0,0,0.5);
}

#footer {
	position:absolute; z-index:2;
	bottom:0; left:0;
	width:100%;
	height:48px;
	background-color:#222;
	background-image:-webkit-gradient(linear, 0 0, 0 100%, color-stop(0, #999), color-stop(0.02, #666), color-stop(1, #222));
	background-image:-moz-linear-gradient(top, #999, #666 2%, #222);
	background-image:-o-linear-gradient(top, #999, #666 2%, #222);
	padding:0;
	border-top:1px solid #444;
}

#wrapper {
	position:absolute; z-index:1;
	top:45px; bottom:48px; left:-9999px;
	width:100%;
	background:#aaa;
	overflow:auto;
}

#scroller {
	position:absolute; z-index:1;
/*	-webkit-touch-callout:none;*/
	-webkit-tap-highlight-color:rgba(0,0,0,0);
	width:100%;
	padding:0;
}

#scroller ul {
	list-style:none;
	padding:0;
	margin:0;
	width:100%;
	text-align:left;
}

#scroller li {
	padding:0 10px;
	height:40px;
	line-height:40px;
	border-bottom:1px solid #ccc;
	border-top:1px solid #fff;
	background-color:#fafafa;
	font-size:14px;
}

#myFrame {
	position:absolute;
	top:0; left:0;
}

/**
 *
 * Pull down styles
 *
 */
#pullDown, #pullUp {
	background:#fff;
	height:40px;
	line-height:40px;
	padding:5px 10px;
	border-bottom:1px solid #ccc;
	font-weight:bold;
	font-size:14px;
	color:#888;
}
#pullDown .pullDownIcon, #pullUp .pullUpIcon  {
	display:block; float:left;
	width:40px; height:40px;
	background:url([email protected]) 0 0 no-repeat;
	-webkit-background-size:40px 80px; background-size:40px 80px;
	-webkit-transition-property:-webkit-transform;
	-webkit-transition-duration:250ms;
}
#pullDown .pullDownIcon {
	-webkit-transform:rotate(0deg) translateZ(0);
}
#pullUp .pullUpIcon  {
	-webkit-transform:rotate(-180deg) translateZ(0);
}

#pullDown.flip .pullDownIcon {
	-webkit-transform:rotate(-180deg) translateZ(0);
}

#pullUp.flip .pullUpIcon {
	-webkit-transform:rotate(0deg) translateZ(0);
}

#pullDown.loading .pullDownIcon, #pullUp.loading .pullUpIcon {
	background-position:0 100%;
	-webkit-transform:rotate(0deg) translateZ(0);
	-webkit-transition-duration:0ms;

	-webkit-animation-name:loading;
	-webkit-animation-duration:2s;
	-webkit-animation-iteration-count:infinite;
	-webkit-animation-timing-function:linear;
}

@-webkit-keyframes loading {
	from { -webkit-transform:rotate(0deg) translateZ(0); }
	to { -webkit-transform:rotate(360deg) translateZ(0); }
}

</style>
</head>
<body>

<div id="header"><a href="http://cubiq.org/iscroll">iScroll</a></div>
<div id="wrapper">
	<div id="scroller">
		<div id="pullDown">
			<span class="pullDownIcon"></span><span class="pullDownLabel">Pull down to refresh...</span>
		</div>

		<ul id="thelist">
			<li>Pretty row 1</li>
			<li>Pretty row 2</li>
			<li>Pretty row 3</li>
			<li>Pretty row 4</li>
			<li>Pretty row 5</li>
			<li>Pretty row 6</li>
			<li>Pretty row 7</li>
			<li>Pretty row 8</li>
			<li>Pretty row 9</li>
			<li>Pretty row 10</li>
			<li>Pretty row 11</li>
			<li>Pretty row 12</li>
			<li>Pretty row 13</li>
			<li>Pretty row 14</li>
			<li>Pretty row 15</li>
			<li>Pretty row 16</li>
			<li>Pretty row 17</li>
			<li>Pretty row 18</li>
			<li>Pretty row 19</li>
			<li>Pretty row 20</li>
			<li>Pretty row 21</li>
			<li>Pretty row 22</li>
			<li>Pretty row 23</li>
			<li>Pretty row 24</li>
			<li>Pretty row 25</li>
			<li>Pretty row 26</li>
			<li>Pretty row 27</li>
			<li>Pretty row 28</li>
			<li>Pretty row 29</li>
			<li>Pretty row 30</li>
			<li>Pretty row 31</li>
			<li>Pretty row 32</li>
			<li>Pretty row 33</li>
			<li>Pretty row 34</li>
			<li>Pretty row 35</li>
			<li>Pretty row 36</li>
			<li>Pretty row 37</li>
			<li>Pretty row 38</li>
			<li>Pretty row 39</li>
			<li>Pretty row 40</li>
		</ul>
		<div id="pullUp">
			<span class="pullUpIcon"></span><span class="pullUpLabel">Pull up to refresh...</span>
		</div>
	</div>
</div>
<div id="footer"></div>

</body>
</html>

  参考 :http://www.cnblogs.com/duanhuajian/archive/2013/04/08/3008323.html

时间: 2024-11-10 08:19:51

iscroll 滚动刷新的相关文章

基于vue的下拉刷新&amp;滚动刷新指令

小编最近在实现移动端列表页面显示的时候一直在思考如何实现列表的自动更新数据,对于大多数Native App或者Web App,在列表的底部增加"加载更多"的按钮也是解决这样的问题一种交互的方式,当然,这样的交互其实还好,不过根据用户的操作习惯来看,似乎滚动刷新更多数据和下拉刷新当前数据的操作方式,更符合用户对列表分页数据的读取习惯,因此,在这里小编想简单的说说,这次在小编系统中所使用的下拉刷新和滚动刷新的实现方式! 其实,这种实现数据加载的原理很简单 在滚动刷新的时候,需要在列表滚动到

项目实战:滚动刷新场景(从ArrayList到LinkedList)

如果有这样一个需求,有这样一个列表显示数据,现假设一共显示25项,初始状态为空. 首先从0-24添加数据,满了之后,覆盖最早数据,即继续从0-24追加数据. 习惯性思维ArrayList开始搞. java.util 类 ArrayList<E> java.lang.Object java.util.AbstractCollection<E> java.util.AbstractList<E> java.util.ArrayList<E> 所有已实现的接口:

支持BetterScroll和iScroll滚动插件的图片懒加载的插件

做H5长页面,内容都是一个个图片.优化页面速度,使用了图片懒加载插件. 下面我安利一款,我在网上寻找到这个懒加载插件zhanyouwei/m-lazy,是支撑BetterScroll和iScroll滚动插件的. 项目地址:https://github.com/zhanyouwei/m-lazy 项目介绍:https://segmentfault.com/a/1190000004656348 原文地址:https://www.cnblogs.com/Koming/p/10000337.html

iScroll 5 刷新封装实例应用

一.准备环节 iscroll.js 5.x版本项目地址 https://github.com/cubiq/iscroll 演示地址:http://pnc.co.il/dev/iscroll-5-pull-to-refresh-and-infinite-demo.html 下载解压,我们打开demos目录,把click复制,改名字为app,也就是我们处理的基础,app文件目录下的index.html改为app.html,都是为了更好理解为自己创建的应用 我们打开app.html,先预览一下js文件

iScroll滚动区域中select、input、textarea元素无法点击的Bug修复

最近在一个项目中使用了iScroll4模拟滚动效果,调试过程中发现一个表单页中的所有表单项都无法点击聚焦, 如<select>.<input>.<textarea>.这是因为iScroll要监听整个页面事件,为了达到 最优效果,它默认禁用了所有元素的默认事件(但也有例外,如<a>默认事件不受影响),所以才造成这些表单元素点击没有反应,无法正常聚焦. 我们打开 iscroll.js ,找到这一行: onBeforeScrollStart : function(

[troubleshoot][archlinux][X] plasma(KDE) 窗口滚动刷新冻结(约延迟10s)(已解决,root cause不明,无法再次复现)

现象: konsole,setting等plasma的系统应用反应缓慢,在滚动条滚动时,尤为明显. 触发条件: 并不是十分明确的系统滚动升级(Syu)后,产生. 现象收集: 可疑的dmesg [ 35.728342] nouveau 0000:04:00.0: DRM: resuming kernel object tree... [ 35.728469] nouveau 0000:04:00.0: priv: HUB0: 6013d4 badf573f (1e408200) [ 35.7660

iScroll 滚动插件使用

iScroll是一个高性能,资源占用少,无依赖,多平台的javascript滚动插件. 官网:http://iscrolljs.com/ > 它可以在桌面,移动设备和智能电视平台上工作.它一直在大力优化性能和文件大小以便在新旧设备上提供最顺畅的体验. > iScroll不仅仅是 滚动.它可以处理任何需要与用户进行移动交互的元素.在你的项目中包含仅仅4kb大小的iScroll,你的项目便拥有了滚动,缩放,平移,无限滚动,视差滚动,旋转功能.给它一个扫帚它甚至能帮你打扫办公室. 即使平台本身提供的

移动端下拉刷新,iScroll.js用法(转载)

分享是传播.学习知识最好的方法 [作者]:挨踢前端 [出处]:http://www.cnblogs.com/duanhuajian/ [声明]:所有博文标题后加(share)的表示收集的他人优秀文章,其余的则为原创. 官网:http://cubiq.org/iscroll-4 概要 iScroll 4 这个版本完全重写了iScroll这个框架的原始代码.这个项目的产生完全是因为移动版webkit浏览器(诸如iPhone,iPad,Android 这些系统上广泛使用)提供了一种本地化的方式来对一个

IScroll的诞生和缺点

转自http://lhdst-163-com.iteye.com/blog/1239784 iscroll.js是Matteo Spinelli开发的一个js文件,使用原生js编写,不依赖与任何js框架.旨在解决移动webkit系浏览器的区域滚动问题,兼容mobile safari.Android默认浏览器.safari.chrome.firefox5+.opera11+.IE9+及其他webkit核心浏览器.最新版本为iscroll4. 官方网站:iscroll4 iscroll的用武之地 1