JavaScript实现移动端无限滚动加载分页
本文详解基于JavaScript实现移动端无限加载分页的原理与代码。通过监听窗口滚动事件,利用scrollHeight、clientHeight和scrollTop三个属性判断是否触底,进而触发Ajax请求加载下一页数据,实现无缝分页体验。
移动端无限滚动加载概述
本文分享使用JavaScript实现移动端无限加载分页的具体代码示例,供读者参考学习。
滚动加载核心原理
核心原理在于监听页面滚动行为,当用户滚动条触及页面底部时,自动触发并执行下一页内容的加载逻辑。
实现该功能需理解以下三个关键DOM属性: 1.scrollHeight:代表页面真实内容的总高度。 2.clientHeight:指浏览器视窗可见区域的高度,即当前屏幕上能直接看到的内容范围。 3.scrollTop:表示窗口上方被隐藏或滚动过的内容高度,即滚动条当前滚动的距离。
实现思路与关键属性
具体实现思路如下:
1. 使用fixed定位方式固定加载提示框的位置。 2. 利用$(window).scroll()方法绑定滚动事件,用于检测页面滚动状态。 3. 设置触发加载的条件公式为:真实内容高度(scrollHeight) - 视窗高度(clientHeight) - 滚动距离(scrollTop) < 10。当该差值小于10时,判定为触底并触发加载。
以下是完整的代码示例:
代码实现与逻辑解析
var page=1; //当前页的页码
var flagNoData = false; //false
var allpage; //总页码,会从后台获取
function showAjax(page){
$.ajax({
url:"",
type:"",
data:"",
success:function(data){
//要执行的内容
showContent();
if(page>=data.allpage){ //当前页码大于等于总页码
flagNoData = true;
};
page+=1; //页数加1
}
})
}
function scrollFn(){
//真实内容的高度
var pageHeight = Math.max(document.body.scrollHeight,document.body.offsetHeight);
//视窗的高度
var viewportHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight || 0;
//隐藏的高度
var scrollHeight = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;
if(falgNoData){ //数据全部加载完了
return;
}else if(pageHeight - viewportHeight - scrollHeight < 10){ //如果满足触发条件,执行
showAjax(page);
}
}
$(window).bind("scroll",scrollFn); //绑定滚动事件
以上内容为本文的全部分享,希望能为读者的学习提供有益帮助,欢迎继续支持本站获取更多技术资源。
JS合并多个数组的三种方法:concat、spread与flat
2026-11-05 17:39:45
JavaScript怎么准确判断数据类型:typeof、instanceof与Object.prototype.toString
2026-11-05 17:09:21
JS中将数组和对象混合组装为JSON字符串
2026-11-05 16:41:42
JS运算符优先级与结合性的区别是什么?
2026-11-05 13:22:02
JS Map怎么只遍历Key或Value
2026-11-05 13:00:36
