浅谈CSS性能优化新属性:will-change

244 阅读1分钟

will-change属性通过告诉浏览器什么属性、什么元素将会发生变化,可以对这些操作进行可能性的优化,由此提高CSS动画的执行效率。

这个属性可以有4个值:

auto: 实行标准浏览器优化。

scroll-position: 指明元素的滚动位置将会出现动画变化,浏览器应该为滚动视窗内容的不可见部分事先做好准备。

contents: 指明元素的内容将会发生变化,浏览器不要缓存它们的内容。

custom-ident: 表示开发者希望在不久后改变指定的属性名或者使之产生动画,比如transform 或 opacity。

如果想通知浏览器会发生一个transform方面的变化,可以这样写:

.element {
        will-change: transform;
}

我们还可以指定多个值,用逗号分隔,例如:

.element {
        will-change: transform, opacity;
 }
 

注意:

1,千万不要过度使用will-change属性,否则,事与愿违,页面的执行效率会降低,推荐的做法是当一个元素或属性发生变化时打开will-change,变化完成之后关闭它。

2,如果你的页面在性能方面没什么问题,则不要添加 will-change 属性来榨取一丁点的速度。 will-change 的设计初衷是作为最后的优化手段,用来尝试解决现有的性能问题,它不应该被用来预防性能问题。