列表转动到底部自动加载更多
在挪动端,常常会用到列表转动到底部,拉一下加载更多,或许点一下加载更多等等,本日我说说我的一个完成的思绪。
经由过程监听列表的转动时候,当用户转动到列表的底部,并停止一小段时候,便以为用户想要加载下一页的数据,当用户滚回列表的顶部时,展现革新的按钮,点击便可革新。
以下是完成的思绪,比较粗拙,迎接各位朋友提出发起。
HTML代码
<div id="cnt" class="cnt">
<div class="listCnt">
<ul>
<li id="loadMore" class="eachList">点击革新</li>
<li class="eachList"></li> //列表*n
……
</ul>
</div>
</div>
js代码
<script>
(function () {
var lastScrollTop = 0;
var timer = null;
document
.getElementById('cnt')
.addEventListener('scroll', function (e) {
if (timer) {
clearTimeout(timer);
timer = null;
}
var target = e.currentTarget;
var listCnt = document.getElementsByClassName('listCnt')[0];
var loadMore = document.getElementById('loadMore');
var curScrollTop = target.scrollTop;
var scrollDown = curScrollTop - lastScrollTop > 0;
var scrollUp = !scrollDown;
var targetHeight = target.offsetHeight;
var listCntHeight = listCnt.offsetHeight;
var isEnd = curScrollTop + targetHeight === listCntHeight;
var isTop = curScrollTop === 0;
if (isTop) {
//想要机能好点,能够加个定时器,不要每次滚到头部都革新
return loadMore.style.display = 'block';
}
if (isEnd) {
//停止时候请依据实际情况调解
timer = setTimeout(function () {
//loadMoreFn
console.info('loadMore')
}, 2000)
}
loadMore.style.display = 'none';
});
})();
</script>
写得急忙,以上代码没有斟酌浏览器的兼容性问题,如:addEventListener等