两行 CSS 可提升 7 倍渲染性能!

2025-05-27

两行 CSS 可提升 7 倍渲染性能!

我就不废话了,直接跳到你需要添加的两行 CSS,这样你的性能就可以提高大约7 倍



{
  content-visibility: auto;
  contain-intrinsic-size: 1px 5000px;
}


Enter fullscreen mode Exit fullscreen mode

你为什么需要这个?

如今的网站需要优化和高性能,而网络用户的注意力持续时间非常短。根据Doherty,阈值响应时间为400毫秒。

现在想象一下,像 Facebook、Instagram 等网站,如果访问时间超过了阈值,那会不会有人再访问这些网站呢?


你什么时候会用到它?

最常见的用例是当您拥有需要在应用程序安装时呈现的大量数据列表/网格时。

例如:静态网站,如规格、文档或旅游博客等……

如果您有任何其他用例,我很乐意在评论中听到。


它是如何工作的?

浏览器会很聪明地跳过您所应用的类的渲染工作content-visibility: auto

浏览器需要知道 DOM 的布局才能进行渲染,那些不在视口中的元素不会被渲染,实际上会呈现contain-intrinsic-size您提供的空框。

总而言之,所有渲染都会被推迟,直到到达视口,浏览器才会使用您提供的宽度、高度和样式来渲染实际布局。

PS:不在视口之外的布局会有一个height: 0,所以当延迟布局进入视口时,它会堆叠在一起,所以这就是为什么contain-intrinsic-size需要的原因,但是,不用担心,这些只是一个后备值,浏览器会在视口中渲染实际的值。

因此,这样做的一个缺点是,如果没有正确给出,滚动条会很古怪并跳转到某个地方contain-intrinsic-size。:)


浏览器支持

content-visibility依赖于CSS Containment 规范content-visibility截至撰写本文时,目前主要支持 Chromium 技术。

不过,content-visibility对于高端系统来说,支持这项功能已经很不错了。而且,随着 Web 开发的不断进步,它很快也会被所有浏览器支持。希望如此 :)


替代方案

有一些替代方案可以使用 JavaScript 来提高性能,例如使用List 虚拟化,但是当你可以用两行代码完成js时,谁愿意编写 100 行代码并维护它呢?css

进一步阅读;你可以在 js 中做到这一点:
react-window
react-virtualized


出色的演示和解释:


进一步阅读:

https://web.dev/content-visibility/#support
https://developer.mozilla.org/en-US/docs/Web/CSS/content-visibility

问候,

文章来源:https://dev.to/mnathani/two-lines-of-css-that-boosts-7x-rendering-performance-4mjd
PREV
我如何在失败的加密货币创业公司中浪费了一年的生命 一切是如何开始的 第一章:Cryptomeda 的起源。 第二章:我辞掉了工作。 第三章:创业生活。 第四章:交易所原型已准备就绪。 第五章:我找到了联合创始人。 第六章:将你的品牌代币化。 第七章:结束与开始。 第八章:宏伟的愿景与计划。 第九章:忙碌、土耳其之旅和精彩的会面。 第十章:电话会议和结局。 总结
NEXT
5 个有用的 VSCode 扩展 5. Todo 树 4. 占位符图像 3. 更好的评论 2. Faker 1. 代码时间 最后...