Hi FE !
Ai
git
前端面试题
前端小tip
  • vite
  • webpack
npm
  • vue2
  • vue3
react
GitHub
Ai
git
前端面试题
前端小tip
  • vite
  • webpack
npm
  • vue2
  • vue3
react
GitHub
  • content-visibility 长列表网页渲染

content-visibility 长列表网页渲染

content-visibility。只需要一行 CSS 代码,就可以实现可见网页只加载可见区域内容,使网页的渲染性能得到数倍的提升!

content-visibility 属性有三个可选值:

visible: 默认值。对布局和呈现不会产生什么影响。 hidden: 元素跳过其内容的呈现。用户代理功能(例如,在页面中查找,按 Tab 键顺序导航等)不可访问已跳过的内容,也不能选择或聚焦。类似于对其内容设置了 display: none 属性。 auto: 对于用户可见区域的元素,浏览器会正常渲染其内容;对于不可见区域的元素,浏览器会暂时跳过其内容的呈现,等到其处于用户可见区域时,浏览器在渲染其内容。

兼容性

content-visibility 是 chrome85 版本开始支持的。

问题

当元素的部分内容如标签这种,元素的高度是有图片内容决定的,因此在这种情况下,如果使用 content-visibility,则可见视图外的 img 初始未渲染,高度为 0,随着滚动条向下滑动,页面高度增加,会导致滚动条的滚动有问题。

解决办法

果在已知元素高度的情况下,可以使用 contains-intrinsic-size 属性,为上面的 card 添加:contains-intrinsic-size:312px;,这会给内容附一个初始高度值。(如果高度不固定也可以附一个大致的初始高度值,会使滚动条问题相对减少)。 修改代码如下:

<style type="text/css">
  .card {
    margin-bottom: 10px;
    content-visibility: auto;
    contain-intrinsic-size: 312px; // 添加此行
  }
</style>

部分场景下它对浏览器的滚动条影响问题,如果你的列表项高度相同,那么可以通过 contain-intrinsic-size 来设置一个初始高度解决。如果列表项高度不固定而又非常重视用户的滚动条体验,那么不建议使用此属性

Edit this page
最近更新: 2025/12/2 01:46
Contributors: qdleader
qdleader
本站总访问量 129823次 | 本站访客数 12人