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

虚拟列表

时间:2023-03-28 19:27:11 HTML

对于长列表,传统的方法是使用延迟加载,下拉到底部获取新的内容加载进去,但是随着加载的数据越来越多,浏览器的重排和重绘开销会增加getting越来越大,即使滑动也会导致冻结。这时候,我们就需要使用虚拟列表来解决此类问题。虚拟列表可视区域:滚动容器元素的视觉可见区域,可滚动区域:滚动容器元素的内部内容区域假设有1000条数据,每个列表项的高度为50,所以可滚动区域的高度为1000*50。当用户改变列表滚动条的当前滚动值时,可见区域的内容会发生变化,虚拟列表是处理用户滚动的,主要目的是改变列表在可见区域的渲染部分area具体步骤:首先计算当前可见区域起始数据的startIndex和当前可见区域结束数据的endIndex,如果元素的高度是固定的,那么startIndex的算法很简单,等于当前的scrollTop/itemHeight(滚动条的高度/列表项的高度),endIndex=startIndex+(clientHieght/itemHeight),然后根据startIndex和endIndex取对应范围的数据,render到可见area,然后计算startOffset和endOffset。从图中可以看出,startOffset和endOffset是一个隐藏区域,会扩大容器元素的内容高度,可以起到缓冲的作用,保持滚动的流畅性。它还可以使滚动条保持在正确的位置。最终效果不是如何滚动。它只是改变了滚动条的高度位置和元素的内容,并没有添加任何多余的元素。