zepto.js + iscroll.js上拉加载 下拉加载的 移动端 新闻列表页面

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="viewport" content="width=device-width,initial-scale=1.0,
maximum-scale=1.0,minimum-scale=1.0,user-scalable=no">
<title>Document</title>
<link rel="stylesheet" type="text/css" href="public/reset.css">
<style type="text/css">
.top{
    top: 0;
}
.footer{
    bottom: 0;
}
.top,.footer{
    position: fixed;
    left: 0;
    text-align: center;
    line-height: 50px;
    height: 50px;
    width: 100%;
    background-color: #0dcecb;
    color: #fff;
    z-index: 100;
}
#wrapper{
    position: absolute;
    left: 0;
    top: 50px;
    bottom: 50px;
    width: 100%;
    background-color: #fafafa;
    z-index: 10;
}
.news-lists .item{
    height: 40px;
    line-height: 40px;
    border-bottom: 1px solid #CFCFCF;
}

#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(public/[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 class="top">
		页面导航
	</div>
	<div id="wrapper">
		<div id="scroller">
			<div id="pullDown">
				<span class="pullDownIcon"></span><span class="pullDownLabel">下拉刷新...</span>
			</div>
			<div class="news-lists" id="news-lists">
				<div class="item">根据市场奖惩制度,结合市场各部门提供的数据</div>
				<div class="item">根据市场奖惩制度,结合市场各部门提供的数据</div>
				<div class="item">根据市场奖惩制度,结合市场各部门提供的数据</div>
				<div class="item">根据市场奖惩制度,结合市场各部门提供的数据</div>
				<div class="item">根据市场奖惩制度,结合市场各部门提供的数据</div>
				<div class="item">根据市场奖惩制度,结合市场各部门提供的数据</div>
				<div class="item">根据市场奖惩制度,结合市场各部门提供的数据</div>
				<div class="item">根据市场奖惩制度,结合市场各部门提供的数据</div>
				<div class="item">根据市场奖惩制度,结合市场各部门提供的数据</div>
				<div class="item">根据市场奖惩制度,结合市场各部门提供的数据</div>
				<div class="item">根据市场奖惩制度,结合市场各部门提供的数据</div>
				<div class="item">根据市场奖惩制度,结合市场各部门提供的数据</div>
				<div class="item">根据市场奖惩制度,结合市场各部门提供的数据</div>
				<div class="item">根据市场奖惩制度,结合市场各部门提供的数据</div>
				<div class="item">根据市场奖惩制度,结合市场各部门提供的数据</div>
			</div>
			<div id="pullUp">
				<span class="pullUpIcon"></span><span class="pullUpLabel">上拉加载更多...</span>
			</div>
		</div>
	</div>
	<div class="footer">
		底部导航
	</div>
</body>
</html>
<script type="text/javascript" src="public/zepto.js"></script>
<script type="text/javascript" src="public/iscroll.js"></script>
<script type="text/javascript">

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

	function pullDownAction () {
		$.getJSON(‘public/test.json‘, function (data, state) {
			if (data && data.state == 1 && state == ‘success‘) {
				//本地测试,为了看到加载中效果故加上定时器
				setTimeout(function () {
					$(‘#news-lists‘).before(data.data);
					myScroll.refresh();
				}, 600);
			}
		});
	}

	function pullUpAction () {

		$.getJSON(‘public/test.json‘, function (data, state) {
			if (data && data.state == 1 && state == ‘success‘) {
				//本地测试,为了看到加载中效果故加上定时器
				setTimeout(function () {
					$(‘#news-lists‘).append(data.data);
					myScroll.refresh();
				}, 600);
			}
		});
	}

	//去除浏览器默认事件
	document.addEventListener(‘touchmove‘, function (e) { e.preventDefault(); }, false);
	//domready后绑定初始化事件
	document.addEventListener(‘DOMContentLoaded‘, loaded, false);

	function loaded() {
		pullDownEl = document.getElementById(‘pullDown‘);
		pullDownOffset = pullDownEl.offsetHeight;
		pullUpEl = document.getElementById(‘pullUp‘);
		pullUpOffset = pullUpEl.offsetHeight;

		/**
		 * 初始化iScroll控件
		 */
		myScroll = new iScroll(‘wrapper‘, {
			vScrollbar : false,
			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 < (this.maxScrollY - 5) && !pullUpEl.className.match(‘flip‘)) {
					pullUpEl.className = ‘flip‘;
					pullUpEl.querySelector(‘.pullUpLabel‘).innerHTML = ‘松手开始更新...‘;
				}
			},
			onScrollEnd: function () {
				if (pullDownEl.className.match(‘flip‘)) {
					pullDownEl.className = ‘loading‘;
					pullDownEl.querySelector(‘.pullDownLabel‘).innerHTML = ‘加载中...‘;
					pullDownAction();
				} else if (pullUpEl.className.match(‘flip‘)) {
					pullUpEl.className = ‘loading‘;
					pullUpEl.querySelector(‘.pullUpLabel‘).innerHTML = ‘加载中...‘;
					pullUpAction();
				}
			}
		});
	}
</script>

需要用移动端浏览器或google的debug模拟移动端浏览器

效果演示    源码下载

转自:http://my.oschina.net/felumanman/blog/478013

时间: 2024-10-13 03:55:26

zepto.js + iscroll.js上拉加载 下拉加载的 移动端 新闻列表页面的相关文章

iscroll.js实现上拉刷新,下拉加载更多,应用技巧项目实战

上拉刷新,下拉加载更多...仿原生的效果----iscroll是一款做滚动效果的插件,具体介绍我就不废话,看官方文档,我只写下我项目开发的一些用到的用法: (如果不好使,调试你的css,想必是个很蛋疼的问题,给点提示 :#wrapper,以及#scroller-content要注意) html如下: <div class="viewport"> <div id="wrapper" class="wrapper"> <

使用dragloader.js插件实现上拉加载/下拉刷新..

在写代码时候有个需求是,在触屏页面,为了加快页面加载速度,案件列表每页展示5条数据: 然后点击更多,展示下一页数据: 但是为了触屏更好的体验,改为往上滑动案件列表,加载下一页数据:就是要实现上拉加载/下拉刷新的效果: 我只用到了 上拉加载: 参考资料:http://blog.csdn.net/xb12369/article/details/39202711 下面是写的demo: html代码: <!DOCTYPE html> <html lang="en"> &

Mint-ui中loadmore(上拉加载下拉刷新)组件在ios中滑动会触发点击事件的解决方法

bug说明: Mint-ui中loadmore(上拉加载下拉刷新)组件 在 使用fastclick的情况下 ,在ios设备中滑动会触发点击事件: 解决方法: 我是按需引入,去项目中找到loadmore下的index.js,全部引入的要找mint下面mint-ui.common.js 路径如下:你的项目名/node_modules\mint-ui\lib\loadmore\index.js 搜索 handleTouchEnd ,记得写event进去 handleTouchEnd: function

微信小程序上拉加载下拉刷新

微信小程序实现上拉加载下拉刷新 使用小程序默认提供方法. (1). 在xxx.json 中开启下拉刷新,需要设置backgroundColor,或者是backgroundTextStyle ,因为加载的动画可能会是白色背景,会看不清. { "usingComponents": { "annicate": "/components/annicate/index" }, "navigationBarTitleText": &quo

ListView上拉加载下拉刷新

主要用到了这个几个文件,MainActivity是界面的Activity,MyAdapter是ListView的自定义适配,MyListView是自定义带头部LIistView,如果只需要上拉加载就不需要:activity_main.xml是住界面,item.xml是ListView的子布局里面只有一个TextView,listview_footer.xml是listview的加载更多的底部布局,listview_header.xml是listview的头部布局. MainActivity.ja

vux (scroller)上拉刷新、下拉加载更多

1)比较关键的地方是要在 scroller 组件上里加一个 ref 属性 <scroller :lockX=true height="-170" :pulldown-config="{downContent: '下拉刷新', upContent: '释放后更新'}" :pullup-config="{upContent:'上拉加载更多', downContent: '释放后加载'}" ref="myScroller" :

XML解析及上拉加载下拉刷新

XML解析及上拉加载下拉刷新 1.XML格式 2.GData和XPath遍历 //配置XML库(配置完才能使用) //(1)添加头文件搜索路径 // Header Search Paths-> /usr/include/libxml2 //(2)添加二进制库 // Link library -> lixml2.dylib //(3)源文件添加编译选项 // -fno-objc-arc //(4)添加头文件 // #import "GDataXMLNode.h"*/ XPat

ios 上拉加载下拉刷新Dome

为练手写了一个小的上拉加载更多下拉刷新的小的Dome . 没有太多的技术含量,只是作为新手的启发用.是上一篇下拉加载的扩展.先看一下那个再看这个就容易很多. Dome下载:http://download.csdn.net/detail/u010123208/8062715 先来梳理一下: 上拉家在更多就是上拉之后在底部现实一个视图,用来提示用户上拉加载更多,如果用户上拉就出发事件,进行加载并在试图中给予提示,同时后台加载数据,将添加的数据加入数据数组,最后重新导入列表: 下拉刷新同样的操作,只不

PullToRefreshGridView上拉刷新,下拉加载

PullToRefreshGridView上拉刷新,下拉加载 布局: 1 <?xml version="1.0" encoding="utf-8"?> 2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:tools="http://schemas.android.com/tools" 4 an