一般的经验法则是,如果动画可能在接下来的 200 毫秒内触发[...] ,那么对动画元素进行 will-change 是个好主意。因此,在大多数情况下,您打算在应用程序当前视图中设置动画的任何元素都应该为您计划更改的任何属性启用 will-change。
所以我的问题是,可以will-change
在任何属性实际动画之前通过 Web Animations API 应用,这会产生预期的效果吗?或者在幕后发生的任何事情的生命周期中为时已晚,will-change
无法正常工作?
似乎通过这个 API 修改的属性实际上并没有作为 CSS 属性反映在 DevTools 中,所以我无法验证这是否真的应用will-change
了。
想法的例子:
this.animation = document.querySelector('#my-element').animate(
[
{
willChange: 'opacity', // will-change applied before any animated property has been changed
opacity: 'initial',
},
{
willChange: 'opacity',
opacity: 'initial',
offset: 0.01, // 1% of the way through the animation
},
{
willChange: 'opacity',
opacity: 0.5,
offset: 0.5, // 50% of the way through the animation
},
{
willChange: 'initial',
opacity: 'initial'
},
],
1000
);