在处理大量数据的长列表时,浏览器经常会因为内存占用过高产生卡顿现象,那么如何优化长列表呢?清楚我们的MVP选手 – 虚拟滚动
虚拟滚动
仅渲染当前窗口可见的的部分列表,而不是将整个列表都渲染出来,这种方法可以降低页面的渲染时间和内存占用,从而提高页面的性能。 那么具体如何实现呢?
首先是模拟滚动,虚拟滚动嘛,我们页面上实际并没有原生的滚动功能,需要我们去模拟,我们需要做的就是根据用户滚动的位置重新渲染可见的列表,当这个操作时间跨度足够小时,它看起来就像在滚动一样。
具体实现方法如下:
- 计算视窗内可能呈现的元素个数,个数n = 视窗的高度/单个元素高度
- 当用户没有滚动时,可视为滚动为0,我们从列表头部开始渲染n个元素
- 用户开始滚动,记录下偏移量,根据偏移量渲染出需要展示的元素