虚拟滚动是什么?

常规滚动网页: 浏览器内容固定,视口响应用户鼠标滚动,上下移动

虚拟滚动网页: 浏览器视口固定,内容响应用户鼠标滚动,上下移动

运动是相对的

运动是相对的

通过滚动事件计算得到正常情况下视口的向下偏移量(Y轴),给内容一个反向的向上偏移,视口保持不变,就可以人为模拟出滚动效果。

1111

浏览器坐标系的定义

浏览器坐标系的定义

虚拟滚动和常规滚动的区别

按需渲染

根据相对偏移量,计算出应该在浏览器视口中被渲染出的元素来渲染。而不是把整个页面结构交给浏览器渲染,减少渲染开销以提升性能。

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/8923793f-058e-490b-abd4-9f70d94ce4ea/Untitled.png

实际例子

https://stackblitz.com/angular/eargxmoggnjb?file=src%2Fapp%2Fcdk-virtual-scroll-context-example.ts

可以看到,其中的内容虽然非常多,但元素长度一直很短,滚动也没有卡顿

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/47bf6ccf-b3c8-4888-a09f-b06594e20d86/Untitled.png

在优化过长单页面时非常有用,结案报告准备用上。