You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
一般情况下,浏览器会把 整个 DOM 作为 CSS 布局上下文,因此:当我们改变部分 DOM 的样式时,也会影响到其他部分,并且没有什么方式来告诉浏览器哪些内容应该在范围内哪些应该在范围外。
假设你有如下页面结构:
<sectionclass="view">
Home
</section><sectionclass="view">
About
</section><sectionclass="view">
Contact
</section>
现在在 view 里面新增一些元素,会影响页面的 style、layout、paint:
<sectionclass="view">
Home
</section><sectionclass="view">
About
<divclass="newly-added-element">Check me out!</div></section><sectionclass="view">
Contact
</section>
简介
先上一张图看性能:
当我们对一个页面进行布局时,性能瓶颈通常是 style、layout、paint。
一般情况下,浏览器会把 整个 DOM 作为 CSS 布局上下文,因此:当我们改变部分 DOM 的样式时,也会影响到其他部分,并且没有什么方式来告诉浏览器哪些内容应该在范围内哪些应该在范围外。
假设你有如下页面结构:
现在在
view
里面新增一些元素,会影响页面的 style、layout、paint:在上面的示例中,所有的**节点(whole DOM)**均被影响,这就意味着,不论元素的 style、layout、paint 是否改变,都会重新计算他们的样式和布局。
现代主流的浏览器都会做一些智能的判断,最终决定哪些需要改变,哪些不需要改变。
不过,页面布局是很复杂的,浏览器不一定能判断到所有的情况。好消息是,一个新的 CSS 属性
contain
把判断的事情交给了开发者。兼容性
52+
❓
❌
❌
❌
40+
6+
实用程度
★★★★
相关链接
The text was updated successfully, but these errors were encountered: