在有趣的文章《关于CSS will-change属性,你需要知道的一切》中提到,如果想要硬件加速,使用
translate3d()
hack是一种旧的做法,而现在应该使用will-change
。使用will-change
是否会带来性能上的好处呢?我发现,在某些情况下,在元素触发动画之前通过JavaScript添加will-change
非常困难。例如:
- 你不能只在CSS中添加
will-change
并期望它起作用,因为如果有多个元素,效果会更差。 - 你也不能只在
:hover
伪类选择器中添加will-change
,因为浏览器需要一些时间来准备。 - 你只能在点击事件上进行动画操作,这样你可以通过JavaScript在悬停时添加
willChange
,让浏览器有足够的时间来准备(200ms)。
translate3d()
相比,will-change
过于复杂(你还必须在动画结束后删除will-change
)。那么,为什么要使用它呢?
will-change
。了解它很有趣... - Jeremy