有一个名为will-change
的新CSS属性,使用您可以定义将经常更改的属性,以便浏览器可以对其进行优化。例如:
.element {
will-change: transform, opacity;
}
但相反呢?是否有will-not-change
之类的建议或工作草案?使用它可以提示浏览器,该属性永远不会改变(常量),所以它可以对它进行一些优化吗?
答案 0 :(得分:7)
浏览器已经针对“不会改变”的属性优化了布局算法。默认情况下。 will-change
是一种选择可能更改属性的方法(尽管属性名称中的"将"可能会建议),因此浏览器可以事先执行必要的优化当那些属性做改变时(至少从它们的初始值开始)。
以这种方式思考:will-change
中未列出的属性已经过优化,因为"不会改变"或者"无论它们是否发生变化没有任何有意义的性能差异。"
例如,您的will-change
声明告诉浏览器为.element
个元素创建一个合成图层,如果它们需要被转换或进行alpha合成,那么它们的渲染是从硬件加速的一开始。由于此will-change
声明不适用于没有此类的元素,因此浏览器会假定其他元素永远不会被转换或进行alpha合成,因此不需要此合成图层。通过不为它们创建合成层,浏览器已经优化了这些元素的渲染,而不是硬件不必要地加速它们。