From 91b4e20cfd2172029d60b5fa6926fd2ff1ac2c3a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=A5=BF=E9=97=A8?= <1745745@qq.com>
Date: Thu, 17 Dec 2015 17:54:44 +0800
Subject: [PATCH] 0.5.0
---
Changelog.md | 6 +
README.md | 33 +-
dist/dropload.css | 21 +-
dist/dropload.js | 173 +++++-----
dist/dropload.min.css | 1 -
dist/dropload.min.js | 4 +-
examples/json/more.json | 54 +++-
examples/{news-list.html => load-bottom.html} | 137 ++++----
examples/load-bottom.png | Bin 0 -> 1662 bytes
examples/load-top-bottom.html | 304 ++++++++++++++++++
examples/load-top-bottom.png | Bin 0 -> 1869 bytes
examples/news-list.png | Bin 729 -> 0 bytes
examples/product-list.html | 176 +++++-----
13 files changed, 638 insertions(+), 271 deletions(-)
delete mode 100644 dist/dropload.min.css
rename examples/{news-list.html => load-bottom.html} (71%)
create mode 100644 examples/load-bottom.png
create mode 100644 examples/load-top-bottom.html
create mode 100644 examples/load-top-bottom.png
delete mode 100644 examples/news-list.png
diff --git a/Changelog.md b/Changelog.md
index f470db3..343edf6 100644
--- a/Changelog.md
+++ b/Changelog.md
@@ -1,3 +1,9 @@
+### 0.5.0(151217)
+
+* 上拉加载改为滑到底部自动加载
+* 删除上拉加载中的↑释放更新
+* 增加无数据`me.noData()` API
+
### 0.4.0(150927)
* 增加参数scrollArea
diff --git a/README.md b/README.md
index cd93eca..20ce1ea 100644
--- a/README.md
+++ b/README.md
@@ -4,6 +4,10 @@
## 背景介绍
+### 0.5.0(151217)
+
+感谢交流群里网友各种吐槽上拉加载抖动。发现`touch`和`scroll`同时作用会发生抖动,干脆把上拉加载改为滑到底部自动加载。如依旧需要上拉加载效果,可以下载[releases0.4.0版本](https://github.com/ximan/dropload/releases/tag/0.4.0)。
+
### 0.4.0(150927)
根据网友提供demo,修改至适用大部分普通列表网页,终于可以大规模使用啦!
@@ -22,21 +26,24 @@
## 示例
-
-[普通列表DEMO](http://ximan.github.io/dropload/examples/news-list.html)
+
+[DEMO1,加载底部](http://ximan.github.io/dropload/examples/load-bottom.html)
+
+
+[DEMO2,加载顶部、底部](http://ximan.github.io/dropload/examples/load-top-bottom.html)

-[固定布局DEMO](http://ximan.github.io/dropload/examples/product-list.html)
+[DEMO3,固定布局,加载顶部、底部](http://ximan.github.io/dropload/examples/product-list.html)
## 依赖
-Zepto 或者 jQuery
+Zepto 或者 jQuery 1.7以上版本,推荐jQuery 2.x版本(二者不要同时引用)
## 使用方法
引用css和js
-
+
````
@@ -49,11 +56,12 @@ $('.element').dropload({
dataType: 'json',
success: function(data){
alert(data);
- // 代码执行后必须重置
+ // 每次数据加载完,必须重置
me.resetload();
},
error: function(xhr, type){
alert('Ajax error!');
+ // 即使加载出错,也得重置
me.resetload();
}
});
@@ -61,7 +69,7 @@ $('.element').dropload({
});
````
-进阶用法详见上面[固定布局DEMO](http://ximan.github.io/dropload/examples/product-list.html)
+进阶用法详见上面[DEMO3,固定布局,加载顶部、底部](http://ximan.github.io/dropload/examples/product-list.html)
## 参数列表
@@ -69,7 +77,7 @@ $('.element').dropload({
|------------|-------------|--------|----------------|
| scrollArea | 滑动区域 | 绑定元素自身 | window |
| domUp | 上方DOM | {
domClass : 'dropload-up',
domRefresh : '<div class="dropload-refresh">↓下拉刷新</div>',
domUpdate : '<div class="dropload-update">↑释放更新</div>',
domLoad : '<div class="dropload-load">○加载中...</div>'
} | 数组 |
-| domDown | 下方DOM | {
domClass : 'dropload-down',
domRefresh : '<div class="dropload-refresh">↑上拉加载更多</div>',
domUpdate : '<div class="dropload-update">↓释放加载</div>',
domLoad : '<div class="dropload-load">○加载中...</div>'
} | 数组 |
+| domDown | 下方DOM | {
domClass : 'dropload-down',
domRefresh : '<div class="dropload-refresh">↑上拉加载更多</div>',
domLoad : '<div class="dropload-load">○加载中...</div>',
domNoData : '<div class="dropload-noData">暂无数据</div>'
} | 数组 |
| distance | 拉动距离 | 50 | 数字 |
| loadUpFn | 上方function | 空 | function(me){
//你的代码
me.resetload();
} |
| loadDownFn | 下方function | 空 | function(me){
//你的代码
me.resetload();
} |
@@ -82,12 +90,15 @@ $('.element').dropload({
`unlock()` 解锁dropload
+`noData()` 无数据
+
## 最新版本
-### 0.4.0(150927)
+### 0.5.0(151217)
-* 增加参数scrollArea
-* 修复未滑动到底部就加载bug
+* 上拉加载改为滑到底部自动加载
+* 删除上拉加载中的↑释放更新
+* 增加无数据`me.noData()` API
[所有更新日志](Changelog.md)
diff --git a/dist/dropload.css b/dist/dropload.css
index 9ea3158..5956f5c 100644
--- a/dist/dropload.css
+++ b/dist/dropload.css
@@ -2,23 +2,18 @@
position: relative;
height: 0;
overflow: hidden;
- -webkit-transform:translate3d(0,0,0);
- transform:translate3d(0,0,0);
+ font-size: 12px;
+ /* 开启硬件加速 */
+ -webkit-transform:translateZ(0);
+ transform:translateZ(0);
}
-.dropload-refresh,.dropload-update,.dropload-load{
- position: absolute;
- left: 50%;
- bottom: 0;
- width: 100%;
+.dropload-down{
+ height: 50px;
+}
+.dropload-refresh,.dropload-update,.dropload-load,.dropload-noData{
height: 50px;
line-height: 50px;
text-align: center;
- -webkit-transform:translate(-50%,0);
- transform:translate(-50%,0);
-}
-.dropload-down .dropload-refresh,.dropload-down .dropload-update,.dropload-down .dropload-load{
- top: 0;
- bottom: auto;
}
.dropload-load .loading{
display: inline-block;
diff --git a/dist/dropload.js b/dist/dropload.js
index bfab085..d482b39 100644
--- a/dist/dropload.js
+++ b/dist/dropload.js
@@ -1,22 +1,30 @@
/**
* dropload
* 西门
- * 0.4.0(150927)
+ * 0.5.0(151217)
*/
;(function($){
'use strict';
- var $win = $(window);
- var $doc = $(document);
+ var win = window;
+ var doc = document;
+ var $win = $(win);
+ var $doc = $(doc);
$.fn.dropload = function(options){
return new MyDropLoad(this, options);
};
var MyDropLoad = function(element, options){
var me = this;
me.$element = $(element);
- me.insertDOM = false;
+ // 上方是否插入DOM
+ me.upInsertDOM = false;
+ // loading状态
me.loading = false;
+ // 是否锁定
me.isLock = false;
+ // 是否有数据
+ me.isData = true;
+ me._scrollTop = 0;
me.init(options);
};
@@ -34,21 +42,43 @@
domDown : { // 下方DOM
domClass : 'dropload-down',
domRefresh : '
↑上拉加载更多
',
- domUpdate : '↓释放加载
',
- domLoad : '加载中...
'
+ domLoad : '加载中...
',
+ domNoData : '暂无数据
'
},
distance : 50, // 拉动距离
loadUpFn : '', // 上方function
loadDownFn : '' // 下方function
}, options);
+ // 如果加载下方,事先在下方插入DOM
+ if(me.opts.loadDownFn != ''){
+ me.$element.append(''+me.opts.domDown.domRefresh+'
');
+ me.$domDown = $('.'+me.opts.domDown.domClass);
+ }
+
// 判断滚动区域
- if(me.opts.scrollArea == window){
+ if(me.opts.scrollArea == win){
me.$scrollArea = $win;
+ // 获取文档高度
+ me._scrollContentHeight = $doc.height();
+ // 获取win显示区高度 —— 这里有坑
+ me._scrollWindowHeight = doc.documentElement.clientHeight;
}else{
me.$scrollArea = me.opts.scrollArea;
+ me._scrollContentHeight = me.$element[0].scrollHeight;
+ me._scrollWindowHeight = me.$element.height();
}
+ // 窗口调整
+ $win.on('resize',function(){
+ if(me.opts.scrollArea == win){
+ // 重新获取win显示区高度
+ me._scrollWindowHeight = win.innerHeight;
+ }else{
+ me._scrollWindowHeight = me.$element.height();
+ }
+ });
+
// 绑定触摸
me.$element.on('touchstart',function(e){
if(!me.loading && !me.isLock){
@@ -67,6 +97,18 @@
fnTouchend(me);
}
});
+
+ // 加载下方
+ me.$scrollArea.on('scroll',function(){
+ me._scrollTop = me.$scrollArea.scrollTop();
+ // 当滑到加载区2/3处时加载
+ if(me.opts.loadDownFn != '' && !me.loading && !me.isLock && (me._scrollContentHeight - Math.floor(me.$domDown.height()*1/3)) <= (me._scrollWindowHeight + me._scrollTop)){
+ me.direction = 'up';
+ me.$domDown.html(me.opts.domDown.domLoad);
+ me.loading = true;
+ me.opts.loadDownFn(me);
+ }
+ });
};
// touches
@@ -79,15 +121,8 @@
// touchstart
function fnTouchstart(e, me){
me._startY = e.touches[0].pageY;
- // 判断滚动区域
- if(me.opts.scrollArea == window){
- me._meHeight = $win.height();
- me._childrenHeight = $doc.height();
- }else{
- me._meHeight = me.$element.height();
- me._childrenHeight = me.$element.children().height();
- }
- me._scrollTop = me.$scrollArea.scrollTop();
+ // 记住触摸时的scrolltop值
+ me.touchScrollTop = me.$scrollArea.scrollTop();
}
// touchmove
@@ -104,25 +139,27 @@
var _absMoveY = Math.abs(me._moveY);
// 加载上方
- if(me.opts.loadUpFn != '' && me._scrollTop <= 0 && me.direction == 'down'){
+ if(me.opts.loadUpFn != '' && me.touchScrollTop <= 0 && me.direction == 'down'){
e.preventDefault();
- if(!me.insertDOM){
- me.$element.prepend('');
- me.insertDOM = true;
- }
me.$domUp = $('.'+me.opts.domUp.domClass);
+ // 如果加载区没有DOM
+ if(!me.upInsertDOM){
+ me.$element.prepend('');
+ me.upInsertDOM = true;
+ }
+
fnTransition(me.$domUp,0);
// 下拉
if(_absMoveY <= me.opts.distance){
me._offsetY = _absMoveY;
- // 待解决:move时会不断清空、增加dom,有可能影响性能,下同
- me.$domUp.html('').append(me.opts.domUp.domRefresh);
+ // todo:move时会不断清空、增加dom,有可能影响性能,下同
+ me.$domUp.html(me.opts.domUp.domRefresh);
// 指定距离 < 下拉距离 < 指定距离*2
}else if(_absMoveY > me.opts.distance && _absMoveY <= me.opts.distance*2){
me._offsetY = me.opts.distance+(_absMoveY-me.opts.distance)*0.5;
- me.$domUp.html('').append(me.opts.domUp.domUpdate);
+ me.$domUp.html(me.opts.domUp.domUpdate);
// 下拉距离 > 指定距离*2
}else{
me._offsetY = me.opts.distance+me.opts.distance*0.5+(_absMoveY-me.opts.distance*2)*0.2;
@@ -130,57 +167,22 @@
me.$domUp.css({'height': me._offsetY});
}
-
- // 加载下方
- if(me.opts.loadDownFn != '' && me._childrenHeight <= (me._meHeight+me._scrollTop) && me.direction == 'up'){
- e.preventDefault();
- if(!me.insertDOM){
- me.$element.append('');
- me.insertDOM = true;
- }
-
- me.$domDown = $('.'+me.opts.domDown.domClass);
- fnTransition(me.$domDown,0);
-
- // 上拉
- if(_absMoveY <= me.opts.distance){
- me._offsetY = _absMoveY;
- me.$domDown.html('').append(me.opts.domDown.domRefresh);
- // 指定距离 < 上拉距离 < 指定距离*2
- }else if(_absMoveY > me.opts.distance && _absMoveY <= me.opts.distance*2){
- me._offsetY = me.opts.distance+(_absMoveY-me.opts.distance)*0.5;
- me.$domDown.html('').append(me.opts.domDown.domUpdate);
- // 上拉距离 > 指定距离*2
- }else{
- me._offsetY = me.opts.distance+me.opts.distance*0.5+(_absMoveY-me.opts.distance*2)*0.2;
- }
-
- me.$domDown.css({'height': me._offsetY});
- me.$scrollArea.scrollTop(me._offsetY+me._scrollTop);
- }
}
// touchend
function fnTouchend(me){
var _absMoveY = Math.abs(me._moveY);
- if(me.insertDOM){
- if(me.direction == 'down'){
- me.$domResult = me.$domUp;
- me.domLoad = me.opts.domUp.domLoad;
- }else if(me.direction == 'up'){
- me.$domResult = me.$domDown;
- me.domLoad = me.opts.domDown.domLoad;
- }
-
- fnTransition(me.$domResult,300);
+ if(me.opts.loadUpFn != '' && me.touchScrollTop <= 0 && me.direction == 'down'){
+ fnTransition(me.$domUp,300);
if(_absMoveY > me.opts.distance){
- me.$domResult.css({'height':me.$domResult.children().height()});
- me.$domResult.html('').append(me.domLoad);
- fnCallback(me);
+ me.$domUp.css({'height':me.$domUp.children().height()});
+ me.$domUp.html(me.opts.domUp.domLoad);
+ me.loading = true;
+ me.opts.loadUpFn(me);
}else{
- me.$domResult.css({'height':'0'}).on('webkitTransitionEnd',function(){
- me.insertDOM = false;
+ me.$domUp.css({'height':'0'}).on('webkitTransitionEnd transitionend',function(){
+ me.upInsertDOM = false;
$(this).remove();
});
}
@@ -188,13 +190,12 @@
}
}
- // 回调
- function fnCallback(me){
- me.loading = true;
- if(me.opts.loadUpFn != '' && me.direction == 'down'){
- me.opts.loadUpFn(me);
- }else if(me.opts.loadDownFn != '' && me.direction == 'up'){
- me.opts.loadDownFn(me);
+ // 重新获取文档高度
+ function fnRecoverContentHeight(me){
+ if(me.opts.scrollArea == win){
+ me._scrollContentHeight = $doc.height();
+ }else{
+ me._scrollContentHeight = me.$element[0].scrollHeight;
}
}
@@ -210,15 +211,33 @@
me.isLock = false;
};
+ // 无数据
+ MyDropLoad.prototype.noData = function(){
+ var me = this;
+ me.isData = false;
+ };
+
// 重置
MyDropLoad.prototype.resetload = function(){
var me = this;
- if(!!me.$domResult){
- me.$domResult.css({'height':'0'}).on('webkitTransitionEnd',function(){
+ if(me.direction == 'down' && me.upInsertDOM){
+ me.$domUp.css({'height':'0'}).on('webkitTransitionEnd transitionend',function(){
me.loading = false;
- me.insertDOM = false;
+ me.upInsertDOM = false;
$(this).remove();
+ fnRecoverContentHeight(me);
});
+ }else if(me.direction == 'up'){
+ me.loading = false;
+ // 如果有数据
+ if(me.isData){
+ // 加载区修改样式
+ me.$domDown.html(me.opts.domDown.domRefresh);
+ fnRecoverContentHeight(me);
+ }else{
+ // 如果没数据
+ me.$domDown.html(me.opts.domDown.domNoData);
+ }
}
};
diff --git a/dist/dropload.min.css b/dist/dropload.min.css
deleted file mode 100644
index 9e03306..0000000
--- a/dist/dropload.min.css
+++ /dev/null
@@ -1 +0,0 @@
-.dropload-up,.dropload-down{position:relative;height:0;overflow:hidden;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.dropload-refresh,.dropload-update,.dropload-load{position:absolute;left:50%;bottom:0;width:100%;height:50px;line-height:50px;text-align:center;-webkit-transform:translate(-50%,0);transform:translate(-50%,0)}.dropload-down .dropload-refresh,.dropload-down .dropload-update,.dropload-down .dropload-load{top:0;bottom:auto}.dropload-load .loading{display:inline-block;height:15px;width:15px;border-radius:100%;margin:6px;border:2px solid #666;border-bottom-color:transparent;vertical-align:middle;-webkit-animation:rotate .75s linear infinite;animation:rotate .75s linear infinite}@-webkit-keyframes rotate{0%{-webkit-transform:rotate(0deg)}50%{-webkit-transform:rotate(180deg)}100%{-webkit-transform:rotate(360deg)}}@keyframes rotate{0%{transform:rotate(0deg)}50%{transform:rotate(180deg)}100%{transform:rotate(360deg)}}
\ No newline at end of file
diff --git a/dist/dropload.min.js b/dist/dropload.min.js
index a4211ba..efc4c0e 100644
--- a/dist/dropload.min.js
+++ b/dist/dropload.min.js
@@ -1,6 +1,6 @@
/**
* dropload
* 西门
- * 0.4.0(150927)
+ * 0.5.0(151217)
*/
-!function(a){"use strict";function e(a){a.touches||(a.touches=a.originalEvent.touches)}function f(a,d){d._startY=a.touches[0].pageY,d.opts.scrollArea==window?(d._meHeight=b.height(),d._childrenHeight=c.height()):(d._meHeight=d.$element.height(),d._childrenHeight=d.$element.children().height()),d._scrollTop=d.$scrollArea.scrollTop()}function g(b,c){c._curY=b.touches[0].pageY,c._moveY=c._curY-c._startY,c._moveY>0?c.direction="down":c._moveY<0&&(c.direction="up");var d=Math.abs(c._moveY);""!=c.opts.loadUpFn&&c._scrollTop<=0&&"down"==c.direction&&(b.preventDefault(),c.insertDOM||(c.$element.prepend(''),c.insertDOM=!0),c.$domUp=a("."+c.opts.domUp.domClass),j(c.$domUp,0),d<=c.opts.distance?(c._offsetY=d,c.$domUp.html("").append(c.opts.domUp.domRefresh)):d>c.opts.distance&&d<=2*c.opts.distance?(c._offsetY=c.opts.distance+.5*(d-c.opts.distance),c.$domUp.html("").append(c.opts.domUp.domUpdate)):c._offsetY=c.opts.distance+.5*c.opts.distance+.2*(d-2*c.opts.distance),c.$domUp.css({height:c._offsetY})),""!=c.opts.loadDownFn&&c._childrenHeight<=c._meHeight+c._scrollTop&&"up"==c.direction&&(b.preventDefault(),c.insertDOM||(c.$element.append(''),c.insertDOM=!0),c.$domDown=a("."+c.opts.domDown.domClass),j(c.$domDown,0),d<=c.opts.distance?(c._offsetY=d,c.$domDown.html("").append(c.opts.domDown.domRefresh)):d>c.opts.distance&&d<=2*c.opts.distance?(c._offsetY=c.opts.distance+.5*(d-c.opts.distance),c.$domDown.html("").append(c.opts.domDown.domUpdate)):c._offsetY=c.opts.distance+.5*c.opts.distance+.2*(d-2*c.opts.distance),c.$domDown.css({height:c._offsetY}),c.$scrollArea.scrollTop(c._offsetY+c._scrollTop))}function h(b){var c=Math.abs(b._moveY);b.insertDOM&&("down"==b.direction?(b.$domResult=b.$domUp,b.domLoad=b.opts.domUp.domLoad):"up"==b.direction&&(b.$domResult=b.$domDown,b.domLoad=b.opts.domDown.domLoad),j(b.$domResult,300),c>b.opts.distance?(b.$domResult.css({height:b.$domResult.children().height()}),b.$domResult.html("").append(b.domLoad),i(b)):b.$domResult.css({height:"0"}).on("webkitTransitionEnd",function(){b.insertDOM=!1,a(this).remove()}),b._moveY=0)}function i(a){a.loading=!0,""!=a.opts.loadUpFn&&"down"==a.direction?a.opts.loadUpFn(a):""!=a.opts.loadDownFn&&"up"==a.direction&&a.opts.loadDownFn(a)}function j(a,b){a.css({"-webkit-transition":"all "+b+"ms",transition:"all "+b+"ms"})}var d,b=a(window),c=a(document);a.fn.dropload=function(a){return new d(this,a)},d=function(b,c){var d=this;d.$element=a(b),d.insertDOM=!1,d.loading=!1,d.isLock=!1,d.init(c)},d.prototype.init=function(c){var d=this;d.opts=a.extend({},{scrollArea:d.$element,domUp:{domClass:"dropload-up",domRefresh:'↓下拉刷新
',domUpdate:'↑释放更新
',domLoad:'加载中...
'},domDown:{domClass:"dropload-down",domRefresh:'↑上拉加载更多
',domUpdate:'↓释放加载
',domLoad:'加载中...
'},distance:50,loadUpFn:"",loadDownFn:""},c),d.$scrollArea=d.opts.scrollArea==window?b:d.opts.scrollArea,d.$element.on("touchstart",function(a){d.loading||d.isLock||(e(a),f(a,d))}),d.$element.on("touchmove",function(a){d.loading||d.isLock||(e(a,d),g(a,d))}),d.$element.on("touchend",function(){d.loading||d.isLock||h(d)})},d.prototype.lock=function(){var a=this;a.isLock=!0},d.prototype.unlock=function(){var a=this;a.isLock=!1},d.prototype.resetload=function(){var b=this;b.$domResult&&b.$domResult.css({height:"0"}).on("webkitTransitionEnd",function(){b.loading=!1,b.insertDOM=!1,a(this).remove()})}}(window.Zepto||window.jQuery);
\ No newline at end of file
+!function(a){"use strict";function g(a){a.touches||(a.touches=a.originalEvent.touches)}function h(a,b){b._startY=a.touches[0].pageY,b.touchScrollTop=b.$scrollArea.scrollTop()}function i(b,c){c._curY=b.touches[0].pageY,c._moveY=c._curY-c._startY,c._moveY>0?c.direction="down":c._moveY<0&&(c.direction="up");var d=Math.abs(c._moveY);""!=c.opts.loadUpFn&&c.touchScrollTop<=0&&"down"==c.direction&&(b.preventDefault(),c.$domUp=a("."+c.opts.domUp.domClass),c.upInsertDOM||(c.$element.prepend(''),c.upInsertDOM=!0),l(c.$domUp,0),d<=c.opts.distance?(c._offsetY=d,c.$domUp.html(c.opts.domUp.domRefresh)):d>c.opts.distance&&d<=2*c.opts.distance?(c._offsetY=c.opts.distance+.5*(d-c.opts.distance),c.$domUp.html(c.opts.domUp.domUpdate)):c._offsetY=c.opts.distance+.5*c.opts.distance+.2*(d-2*c.opts.distance),c.$domUp.css({height:c._offsetY}))}function j(b){var c=Math.abs(b._moveY);""!=b.opts.loadUpFn&&b.touchScrollTop<=0&&"down"==b.direction&&(l(b.$domUp,300),c>b.opts.distance?(b.$domUp.css({height:b.$domUp.children().height()}),b.$domUp.html(b.opts.domUp.domLoad),b.loading=!0,b.opts.loadUpFn(b)):b.$domUp.css({height:"0"}).on("webkitTransitionEnd transitionend",function(){b.upInsertDOM=!1,a(this).remove()}),b._moveY=0)}function k(a){a._scrollContentHeight=a.opts.scrollArea==b?e.height():a.$element[0].scrollHeight}function l(a,b){a.css({"-webkit-transition":"all "+b+"ms",transition:"all "+b+"ms"})}var f,b=window,c=document,d=a(b),e=a(c);a.fn.dropload=function(a){return new f(this,a)},f=function(b,c){var d=this;d.$element=a(b),d.upInsertDOM=!1,d.loading=!1,d.isLock=!1,d.isData=!0,d._scrollTop=0,d.init(c)},f.prototype.init=function(f){var k=this;k.opts=a.extend({},{scrollArea:k.$element,domUp:{domClass:"dropload-up",domRefresh:'↓下拉刷新
',domUpdate:'↑释放更新
',domLoad:'加载中...
'},domDown:{domClass:"dropload-down",domRefresh:'↑上拉加载更多
',domLoad:'加载中...
',domNoData:'暂无数据
'},distance:50,loadUpFn:"",loadDownFn:""},f),""!=k.opts.loadDownFn&&(k.$element.append(''+k.opts.domDown.domRefresh+"
"),k.$domDown=a("."+k.opts.domDown.domClass)),k.opts.scrollArea==b?(k.$scrollArea=d,k._scrollContentHeight=e.height(),k._scrollWindowHeight=c.documentElement.clientHeight):(k.$scrollArea=k.opts.scrollArea,k._scrollContentHeight=k.$element[0].scrollHeight,k._scrollWindowHeight=k.$element.height()),d.on("resize",function(){k._scrollWindowHeight=k.opts.scrollArea==b?b.innerHeight:k.$element.height()}),k.$element.on("touchstart",function(a){k.loading||k.isLock||(g(a),h(a,k))}),k.$element.on("touchmove",function(a){k.loading||k.isLock||(g(a,k),i(a,k))}),k.$element.on("touchend",function(){k.loading||k.isLock||j(k)}),k.$scrollArea.on("scroll",function(){k._scrollTop=k.$scrollArea.scrollTop(),""!=k.opts.loadDownFn&&!k.loading&&!k.isLock&&k._scrollContentHeight-Math.floor(1*k.$domDown.height()/3)<=k._scrollWindowHeight+k._scrollTop&&(k.direction="up",k.$domDown.html(k.opts.domDown.domLoad),k.loading=!0,k.opts.loadDownFn(k))})},f.prototype.lock=function(){var a=this;a.isLock=!0},f.prototype.unlock=function(){var a=this;a.isLock=!1},f.prototype.noData=function(){var a=this;a.isData=!1},f.prototype.resetload=function(){var b=this;"down"==b.direction&&b.upInsertDOM?b.$domUp.css({height:"0"}).on("webkitTransitionEnd transitionend",function(){b.loading=!1,b.upInsertDOM=!1,a(this).remove(),k(b)}):"up"==b.direction&&(b.loading=!1,b.isData?(b.$domDown.html(b.opts.domDown.domRefresh),k(b)):b.$domDown.html(b.opts.domDown.domNoData))}}(window.Zepto||window.jQuery);
\ No newline at end of file
diff --git a/examples/json/more.json b/examples/json/more.json
index 2da1bfd..ee08b46 100644
--- a/examples/json/more.json
+++ b/examples/json/more.json
@@ -1,22 +1,64 @@
{
"lists":[
+ {
+ "title":"Apple 苹果 iPhone 6s Plus (A1699) 16G 玫瑰金色 移动联通电信4G 全网通手机",
+ "pic":"http://d8.yihaodianimg.com/N05/M03/D4/1E/CgQI0lYEBwWAQIvJAAFyostaOYY12501_80x80.jpg",
+ "link":"#1",
+ "date":"2015-12-01"
+ },
+ {
+ "title":"Letv 乐视1S 乐1S 移动联通双4G 双卡双待 16GB 金",
+ "pic":"http://d9.yihaodianimg.com/N07/M00/6B/E6/CgQIz1ZNQWeALuYuAASH8T5MJzY38001_80x80.jpg",
+ "link":"#2",
+ "date":"2015-12-02"
+ },
+ {
+ "title":"NOKIA/诺基亚 2610 nokia 2610 经典诺基亚直板手机 学生备用老人手机 诺基亚低端功能机",
+ "pic":"http://d8.yihaodianimg.com/N08/M0A/6B/E1/ChEi1lZhlgSAEES9AAIPUw3996808600_80x80.jpg",
+ "link":"#3",
+ "date":"2015-12-03"
+ },
+ {
+ "title":"华为 Mate8 NXT-TL00 3GB+32GB版 移动定制 月光银",
+ "pic":"http://d6.yihaodianimg.com/N09/M00/78/AA/ChEi2VZpRZCAeyz-AAP2yE5HMTQ17001_80x80.jpg",
+ "link":"#4",
+ "date":"2015-12-04"
+ },
+ {
+ "title":"锤子 坚果 32GB 红色 移动联通4G手机 双卡双待",
+ "pic":"http://d6.yihaodianimg.com/N07/M01/98/48/CgQI0FY3GNuAeKARAARTi1sTc0E99401_80x80.jpg",
+ "link":"#5",
+ "date":"2015-12-05"
+ },
+ {
+ "title":"华为荣耀7i ATH-AL00 3G内存增强版 移动联通电信4G 沙滩金 双卡双待",
+ "pic":"http://d9.yihaodianimg.com/N05/M0A/B6/5A/CgQI0lX45JWANx7NAANWUytnWfY51201_80x80.jpg",
+ "link":"#6",
+ "date":"2015-12-06"
+ },
+ {
+ "title":"小米 红米2A 增强版 白色 16G 移动4G手机 官网版 双卡双待",
+ "pic":"http://d6.yihaodianimg.com/N08/M08/94/33/ChEi1FX_oHWAWJYUAAL4rKvikTE54401_80x80.jpg",
+ "link":"#7",
+ "date":"2015-12-07"
+ },
{
"title":"Samsung 三星 Galaxy Note4 N9108V 移动4G手机 幻影白",
"pic":"http://d8.yihaodianimg.com/N06/M06/8A/B9/CgQIzVQj87GAZ2-bAAMyoIZt8v863301_80x80.jpg",
- "link":"#1",
- "date":"2015-02-02"
+ "link":"#8",
+ "date":"2015-12-08"
},
{
"title":"HTC Desire 826T 魔幻蓝 移动4G手机 双卡双待",
"pic":"http://d8.yihaodianimg.com/N06/M04/DC/24/ChEbu1T4HVeASjwEAAGHikpYgyQ10901_80x80.jpg",
- "link":"#2",
- "date":"2015-01-03"
+ "link":"#9",
+ "date":"2015-12-09"
},
{
"title":"华为 荣耀畅玩4X Che2-UL00 联通标配版4G手机 双卡双待双通 白色",
"pic":"http://d8.yihaodianimg.com/N05/M05/BE/72/ChEbulTYbhyAY_DmAAGmsWjdGgY32601_80x80.jpg",
- "link":"#3",
- "date":"2015-02-02"
+ "link":"#10",
+ "date":"2015-12-10"
}
]
}
\ No newline at end of file
diff --git a/examples/news-list.html b/examples/load-bottom.html
similarity index 71%
rename from examples/news-list.html
rename to examples/load-bottom.html
index 6717125..5cfdbc8 100644
--- a/examples/news-list.html
+++ b/examples/load-bottom.html
@@ -2,7 +2,7 @@
- 下拉刷新
+ 加载底部
-
+
-
+
-
+
diff --git a/examples/load-bottom.png b/examples/load-bottom.png
new file mode 100644
index 0000000000000000000000000000000000000000..f9c1b47fa7bd4c4cce7fb8e7e586912aef3ee292
GIT binary patch
literal 1662
zcmYk7dsLEl7{}GTWtp6LGHu@4>8MlNsZlnMyk1hLc7aL_uTz`p5fuva0_LT(tynv2
zxpazx7Ru59NriEXtd*%pNGUZDFXasl(FvlGb70cpJ?DMjf1dYwzR&mhJiqtmX=sS0
z#a;^o0|U#j(4e!L_e
z;&PRbuN1^9d16nsyYMt?V|lt(J(9`BCMcXi=H|vmMpujd7bu~8bnY2%jO6YEClkV}
z<&?$P)x~>j+d@=@;f+F)*;RjkXAsEz_>q@z*a|dyl^Sa|%)v^mr%=9^niXAAL%xUz
z09)Cdok6WQ1@lk)*4ZIXcUQA$j;bk6Rq6z=^-JQu;>FnK{L+rBTP>fY?8bx3Mo(I4
z#b`fA+!l=nGnwO+jfQL?%e$M!+1;BQ|Josui(YFX>*Q!UKKpy2%D;c2?=A8Y-y58_
zRLMv^j2e;83njD!Ea--@v5}!x`^q^IAM;{L3RHQe8lu{kj=HPVY29e$mIdvzBV00E
zbc%u##{q*!Rtcznu!L9Klvy(p60H-ZG0TZ~-FHC@5*!(HZU?<5fF$bn^N_DfOVTufoTB&hsdTKLp6&L)WDeSH
zI{6SAvjA1vHBd3{Zv7;y-0tvwUsCa=v$rzUOXUZWsMUpn9ty@?1{rr2^;GtkWm6ot
ztkRA-cunGEHbxzi+o;5`BM})kVsgbnzoay#eozZW{>^zBcZ_-cQRmYvgx$ijXQ}8!
zHb*z)fb`&T>*WLhC~G^v)ZB{@qW~w;tRk^lFA0*^laFmkt*6NBnrp7neePrOo#l$F
zUU>Dsgx(S@3Y&P&>UzyMTm}w0YPIpO5%R3F
zC4>Rgjm-2P$7*}~j4wu!%V)LE_
z>0AS(ZbinB893yDHdnwFud$l;M&x19Bs`5dHF@PW)CUel?NNwk^khepU^XwyOx{nO
zl$?S^#SCSy0kn@BE^_^y>l@*Qt7*tR5t>l|-fP@~*^GJ_PNuGLTpZBNtUj~IYn>E{
zAPeVaT9-JC22)#CA=;Y<+zEt?TW!~!JB!hOm3mc_o*Sx)GvY`UwbK*6UGcecFqb#l
zqVs4ANJa(Tm;Q2aOlpiqR>yLl7|J1qkf2UMOt3Ikflsj7KVEt|jyYkM%KEAzSZDJ@@;bIGrb
z*gw_xR(3&vvb+1aFUsDD)=v2hENVAAZCX(th6mTts;TkpHnN`FAI^~A65!%MK?AO{
zy_=uL7YU}4AmZ3#I%2heM3VTE`-hQ9KG7hQjS8>M&6Ha*Fm7c9^s!F^b9>_q8>BIR
z%(uCiyYL{NFGy#DtC(gk9zw-Y8vdT%+~M}`w&&`vOOc|mp6+H
+
+
+
+ 加载顶部、底部
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/examples/load-top-bottom.png b/examples/load-top-bottom.png
new file mode 100644
index 0000000000000000000000000000000000000000..9a2682891c0a2f920ad56b0c736447bd8854dd17
GIT binary patch
literal 1869
zcmY+FdsLEl7{|?H^HMgg$ebfRSzf44F&B!csZ*?ugBU3^$l<6@EZ>LL$Kf5zn}_4q+1S``JrWgxCD*FQM!$Rkb6Nju)^}!e$~5#>
z@>k@nKn@-o>a*jMK|`_f(m6^Il}Z&CGfbkQbuW``ZA*&7Uuu@AdV`@Y3w)QxkuA4q
zeuAghD^1c31E!`L8q&;R2rFswX~O)%f@Lh4Wv#*GQf5C{FrtGVL|Ff8I@e#lJk>0+q4NN
zX*ql^K#^!y5+3g5;^MFaVSgOY6~3-v_T+=g
z?GRJ%<8RzUs>4#6F>c=0tF6?r7wMQfX|sAR$G}_90G9`n_!DD~YtJ=QY+@UrrPga%
z=IDk$-h;(laLnrRo(
z#lg052`#$R
zn?1D;WUdm93%RZE*JhHb0ch6s>I9cxakPn$P|G*GSb{bYu;+qYYYnIx3Z*M79~|@*8HsdY-X@y!GFUJ5TW?=W~(HnlUo{EgW%F5_s1BAE#;uoU3
zod1y|^$z+_|E;9+GERRA>jY6z9;x5G%1V$p=f8dw)nQ-r#l%?Ig-fj5t!EJjS##AJ
z;%kRgp+L8d8zh~o0w3PY(gXh}Aq}a)8S#(>?NxJF-c%&uB#WjvK388Eoy~?Jm_yHV
z(lLXWg}%dbM_Yt(dxX{cmhrxK#-MeTx1EKsW4ymdTX5RnzHMvFX99N)dbQ)lvz$W7
zqXdxV00gy(Kjf7gDW5$SV8jZw1?~}EtB|~XV~sP5ve(%$e@(`DwzH0R(&?oXylNh`
z*xo<&KMlox^TChKHn6UETnqm)zK}bF{cytn8tl_iu3_gxz~g%}tLF-)ei7W`XH1|Z
z$_F&JDscI(n4*Lh!AR;rC=A%Q-+g15jh84Ba0*hgd=aCmN;MdHG%eANwp
z!v~1UvR^GmiFhka2wAs9-iYv7Ag#g0B^X>r{ijaJg*QPkgA_w*}0C0Z!?>-eI
zrnfL^D5R0MH=MxpdJI~`6w%!QeQr*E!=Y(L(ILxuq06MLH_0^mn{FO4r5<*Azqdow
zO72+0&TUU!b)~v+3VT71@rCmWdXsuig23n^*JNNJtD4%WKN@0(TX2M2HK>mR?t6}p
zcSY3cG8YB)%H1zjDRw1?SF(;GjX)J@!~u7Q-;7hIrxB>@c%!-5$ZgHf2sqV~h9t~a
z&&mNP8x`kkpF$b=axI;$T>hJOl^F(yQfFkuLwSIGtbz4I+j1k_aVpkBNV$IHWV|bB
zTV?{5={eixxweqoA4iN6nZ3`Rpe2t`0fdgPttoo+s#txdRS|b++n)RT|6R%VUsTc3
z$3gKA(sHqxo`0M{?fY;(sAy@7bGtZTX)XUl@-}5>cvCNU-1yp5sW9r=J}plAZ;n;@
z&I;*!`9X2B*xj!NdTDIfcNK3xCSccM`m`eRT_N>oN{YW5e%Wu-=NHi*nANhIdKi!B5P)01A
z?Q|bpHZ$-=8e>2I4Uy61nYoVHF9%WTm?#vAc$V$RL{zCO)Un$;=Fdzt5cSQ;!nr2-
z+3cpS)R;>eyc{qkaQU)^+8>^J_WM7O)Rkvs5V(c;9&$xtJcy@=XcK(!CqB0m(OdfP
z%LWq%?>-TQHzgVnyqc7G8s&)DSb`d1E&-q7Z6AKpqH&
zq&V4;It2LKPvZKO99+|{o*vD~bgFBV%v!zUTp)a;xE)yz*mn4e`iAPF;g3>l>rH*t`cbA4+fYOmvgTSOaS#!pL;x$?k-xFg7S2NNaPU{sQX&t^m_tSYg~Ja5JA
z!RrULCaSlCo`a-#ajYHVSBdu%8aJ-=0ap;778Y`~ZzBQ$=p%;%QpqJS!2`tFa
z8*YOXGgMVV2h#&q1PvR(FHa~B0l`;>52`4>DM7TuPbZ8jH1)n6A-JC~bt23>A7>9)
zwT{{mj3)373_@|cbU<3)+7dKHI%QW;Mmk7+wn+=$TN9lRX3Twf@uVHhVc(k9sB5F+Zjdj9@@X@T`
z1KH9I89
z<;6CgU95;i;he=N#iGLzz5RdCj9fmKR;hylHdm}QKT5ox{QLC{E4
- 下拉刷新
+ 固定布局,加载顶部、底部
-
+
@@ -203,92 +207,100 @@
12文字描述文字描述文字描述文字描述文字描述
+