常规滚动网页: 浏览器内容固定,视口响应用户鼠标滚动,上下移动
虚拟滚动网页: 浏览器视口固定,内容响应用户鼠标滚动,上下移动
运动是相对的
通过滚动事件计算得到正常情况下视口的向下偏移量(Y轴),给内容一个反向的向上偏移,视口保持不变,就可以人为模拟出滚动效果。
浏览器坐标系的定义
根据相对偏移量,计算出应该在浏览器视口中被渲染出的元素来渲染。而不是把整个页面结构交给浏览器渲染,减少渲染开销以提升性能。
实际例子
https://stackblitz.com/angular/eargxmoggnjb?file=src%2Fapp%2Fcdk-virtual-scroll-context-example.ts
可以看到,其中的内容虽然非常多,但元素长度一直很短,滚动也没有卡顿
在优化过长单页面时非常有用,结案报告准备用上。