说明
该库是一个虚拟滚动的纯 js 计算模型,可以根据滚动偏移计算当前应该显示的列表范围,最终作为 UI 渲染框架的输入。
基本原理:
示例:
var vsb = new VirtualScrollBounding({
list: lsitData,
minRowHeight: 30,
clientHeight: 300,
virtualLength: 30,
})
vsb.on(
'update',
({
strategy, // 计算策略,VirtualScrollBounding.EQUAL_RATIO(等比滚动)或VirtualScrollBounding.EQUAL_DIFF(等差滚动)
top, // 列表顶部偏移
rows, // 当前应该显示的列表子集
}) => {
}
)
vsb.scrollTo({ top: 300 })
高度自适应
var vsb = new VirtualScrollBounding({
list: lsitData,
minRowHeight: 30,
clientHeight: 300,
virtualLength: 30,
virtualAdjust: true,
})
vsb.on('update', ({ strategy, top, rows }) => {
})
vsb.scrollTo({ top: 300 })
vsb.adjust(ahs)
跟固定行高相比,需启用 virtualAdjust。然后在 scrollTo() 之后需调用 adjust(ahs) 用来调整高度。参数 ahs 是一个数组,代表虚拟列表每一行的实际高度(来源于外部,比如读取 dom)。