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 的设计初衷是作为最后的优化手段,用来尝试解决现有的性能问题,它不应该被用来预防性能问题。