content-visibility
content-visibility 用来控制元素内容是否需要渲染。
最常用的是 content-visibility: auto,浏览器可以先跳过屏幕外内容的布局和绘制,等滚动到附近再渲染。
适合长列表、大量卡片、大段文章这种首屏外内容很多的页面。
取值
visible:默认值,正常渲染hidden:跳过内容渲染,内容不会被查找、选中、聚焦auto:浏览器自动判断,屏幕外内容可以先不渲染
搭配 contain-intrinsic-size
使用 content-visibility: auto 时,如果内容还没渲染,浏览器可能不知道它真实高度,滚动条就容易抖动。
一般会配合 contain-intrinsic-size 给一个预估尺寸。
.list-item {
content-visibility: auto;
contain-intrinsic-size: auto 240px;
}
auto 240px 的意思是:先用 240px 占位,元素真正渲染过后,浏览器可以记住它的真实尺寸。
示例
注意
- 首屏内容一般不需要加
- 它不是虚拟列表,DOM 仍然存在,只是跳过部分渲染工作
- 预估高度尽量接近真实高度,不然滚动时还是可能跳动