# 性能指标FP、FCP和FMP分别跟哪些因素有关

# 虚拟滚动的实现原理?

  • 简述

通过「单个元素高度」计算当前列表全部加载时的高度作为「滚动容器」的「可滚动高度」,按该「可滚动高度」撑开「滚动容器」。并根据「当前滚动高度」,在「可视区域」内按需加载列表元素。

  • 实现
  1. 监听滚轮事件/触摸事件,记录列表的总偏移量。
  2. 根据总偏移量计算列表的可视元素起始索引。
  3. 从起始索引渲染元素至视口底部。
  4. 当总偏移量更新时,重新渲染可视元素列表。
  5. 为可视元素列表前后加入缓冲元素。
  6. 在滚动量比较小时,直接修改可视元素列表的偏移量。
  7. 在滚动量比较大时(比如拖动滚动条),会重新渲染整个列表。
  8. 事件节流