will-change
属性 背后的理念是,不再使用诸如 transform: translateZ(0)
这样的黑客方法来告诉浏览器在哪里进行优化,而是将其标准化。 典型的、 可以理解的抱怨 是,这会使 CSS 变得复杂。 浏览器难道不应该足够智能,能够自行进行这些优化,而不是将责任留给开发者吗? 浏览器对此的回应是:从启发式角度确定这些事情几乎是不可能的。 这类似于响应式图像中的 sizes
属性——直接告诉浏览器,可以让它更早地根据该信息采取行动。 浏览器还表示,这不是 CSS 变得更加复杂, 而是网页变得更加复杂。 另一个抱怨是, 建议的做法 是使用 JavaScript 按照需要应用和移除 will-change
,这要求太高了。
所有这些铺垫都是为了链接到 Thierry Koblentz 的文章,他在文中警告说,will-change
会创建新的堆叠上下文,这可能是意想不到的,并会导致跨浏览器差异。