移动端下拉滚动刷新
一、需求
移动端下拉到底,加载更多数据。由于网页的执行都是单线程的,在JS
执行的过程中,页面会呈现阻塞状态。因此,如果JS
处理的数据量过大,过程复杂,可能会造成页面的卡顿。传统的数据展现都以分页的形式,但是分页的效果并不好,需要用户手动点击下一页,才能看到更多的内容。有很多网站使用无限分页的模式,即网页视窗到达内容底部就自动加载下一部分的内容。
二、概念
clientHeight:视口(viewport)的高度,就是我们在浏览器中所能看到内容的高度;
screenHeight:屏幕高度,实际移动设备的屏幕高度。
scrollHeight:真实内容的高度;
scrollTop:视窗上面隐藏掉的部分。
三、原理
真实内容高度 - 视窗高度 - 上面隐藏的高度 < 20,作为加载的触发条件
四、实现方法
1,获取滚动条到文档顶部的距离
var scrollTop = document.documentElement.scrollTop;
//或
var scrollTop = Math.ceil($(this).scrollTop());
2,获取可视区高度
1 var v_height = document.documentElement.clientHeight;
2 //或
3 var v_height = $(this).height();
3,获取文档总高度
1 var d_height = document.body.scrollHeight;
2 //或
3 var d_height = $(document).height();
4,添加滚动监听事件
1 $(window).scroll(function(){});
5,真实内容高度 - 视窗高度 - 上面隐藏的高度 < 20,作为加载的触发条件
1 $(function(){
2 getData();
3 $(window).scroll(function(){
4 var scrollTop = Math.ceil($(this).scrollTop());
5 var v_height = $(this).height();
6 var d_height = $(document).height();
7 if(d_height - v_height - scrollTop < 20){
8 showLoading();
9 getData();
10 hideLoading();
11 }
12 })
13 })
五、触发请求常用判断
1 function condition(){
2 var pageHeight = Math.max(document.body.scrollHeight,document.body.offsetHeight);
3 var viewportHeight = window.innerHeight ||
4 document.documentElement.clientHeight ||
5 document.body.clientHeight || 0;
6 var scrollHeight = window.pageYOffset ||
7 document.documentElement.scrollTop ||
8 document.body.scrollTop || 0;
9 return pageHeight - viewportHeight - scrollHeight < 20;
10 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
2018-12-13 margin显示怪异,外边距合并问题
2017-12-13 java配置好jdk-bash: /usr/bin/java: No such file or directory
2016-12-13 MyBatis之多表关联查询
2016-12-13 MyBatis之CRUD