当前位置: 首页 > Web前端 > HTML

网页中列表数据的页面加载和自动加载

时间:2023-04-02 12:40:38 HTML

1简单说明一下,在实际开发中,当数据量较大时,需要页面(段)加载,不能一次性加载所有数据。同时,当用户浏览到页面底部时,自动加载显示下一条数据,可以加快新页面内容的显示速度,提升用户体验。2分页加载分页加载时,需要维护几个额外的相关数据:offsetPage(当前页码),hasNext(flag是否还在),可以选择性的增加一个fetching字段,表示正在加载数据.数据Model的简单格式设计如下:{list:[],hasNext:1,offsetPage:0,fetching:true}(ps:服务端需要提供支持分段获取数据的API,例如通过设置limit和offset参数来指定数据间隔)分页加载的大致过程是:根据offsetPage和预定义的“每次限制加载的数据数”,设置分段加载的参数为异步加载数据,首先设置fetching属性为true以显示loading获取效果数据后,将结果拼接在list数组后面,fetching设置为false和offsetPage++3。自动加载和分段加载的思路很简单。下面说说自动加载的一个实现,首先是项目的实际开发截图。当您滚动到“靠近列表底部”时,您可以看到“加载更多”字样。当继续滚动页面,到达底部时,会触发自动加载:当到达或非常接近下一页时,触发下一页数据的加载。”说到编码实现时level,需要了解DOM元素的几个属性:scrollHeight、clientHeight、scrollTop等:scrollHeight:容器元素中所有内容的高度(包括padding)clientHeight:容器元素的可见区域(注意这不一定是浏览器窗口的高度),我参考网上的图片来解释一下:scrollTop:滚动位置距离顶部的高度,没有滚动时,该值为0。调用这三个值,就可以计算是否滚动到了容器元素的底部,伪代码如下:scrollTop<[asmallervalue]){//加载下一页//getNextPageData()}}4Tips:在绑定Scroll事件的时候,首先要确定ContainerElement,即确定你要的是哪个容器元素一个滚动条,DOM层级比较深的时候容易混淆。一个容易犯的错误是没有为目标ContainerElement指定溢出样式的值,导致滚动条属于父元素,从而无法触发Scroll事件。可以根据情况限制自动加载的页面数量,比如设置为只自动加载前10页,之后需要手动点击“加载更多”。