使用将更改属性而不是 translate3d 进行硬件加速有什么好处
What is advantage of using will-change property instead of translate3d for hardware acceleration?
在有趣的文章中 你需要知道的关于CSS将改变属性的一切 它说,如果你想要硬件加速,使用translate3d()
黑客是旧的做事方式,而不是你应该使用will-change
。使用will-change
时性能有什么好处吗?我发现在某些情况下,在元素触发动画之前通过 JavaScript 添加will-change
是非常困难的。例如
- 你不能只是把
will-change
放在CSS中并期望它工作,因为如果你有多个元素,情况会更糟。 - 您不能
will-change
放入伪选择器:hover
因为浏览器需要一些时间来准备。 - 点击事件时留下动画,您可以通过JavaScript在悬停时添加
willChange
,让浏览器有足够的时间准备(200毫秒)。
总的来说,你必须以某种方式预测用户的行为,这很困难。它太复杂了(您还必须在动画结束后删除will-change
)超过translate3d()
。为什么要使用它?
-
如前所述,指定转换构成黑客攻击。
will-change
是一个标准。 -
有关于何时使用
will-change
和何时不使用的指南(一般想法是谨慎使用它,并且仅在您需要时才使用它)。另一方面,许多作者建议使用转换黑客而不放弃。
如果希望用户以触发某些资源密集型视觉效果的方式与元素交互,请设置will-change
。就这么简单。您不必预测用户何时或是否与元素交互并决定是否设置will-change
- 您只需设置will-change
,让浏览器担心其余的。
你不会will-change
所有的事情,但是当你期望某个属性在某个元素上发生变化时,告诉浏览器该特定属性will-change
该特定元素上。用户是否实际触发了该特定页面加载或浏览会话中的更改与作为作者的您无关。
will-change
本身并没有更好的性能——事实上,它在高层次上与转换黑客几乎相同。性能提升主要来自明智地使用will-change
因此您不会将系统资源浪费在不需要它们的事情上(请参阅上面的第 #2 点)。
- 这是什么 ==- javascript 运算符
- 我的单元测试选项是什么
- 全局变量和全局对象的属性之间有什么区别吗
- 如何使用javascript禁用firefox中的硬件加速
- 滚动位置 (scrollTop) 硬件是否在浏览器中加速
- WebGL VS Canvas 2D 硬件加速
- 有没有办法在Chrome上获得真/假,以了解硬件加速是否已激活
- 是否可以在CSS宽度转换上强制硬件加速
- 带有硬件加速 css 的画布
- 是否可以强制浏览器仅通过软件进行htm5视频解码?也就是说,禁用硬件加速
- 使用将更改属性而不是 translate3d 进行硬件加速有什么好处
- 持续时间为零的css转换是否仍然是硬件加速的
- 使用java脚本访问DVD驱动器等硬件的最佳方式是什么
- 以编程方式禁用浏览器中的画布硬件加速
- 通过使用-webkit转换而不是-webkit过渡来利用硬件加速
- 在Chrome中启用硬件加速可以防止画布显示矢量图像与Fabricjs
- JavaScript检测硬件加速是否启用
- 如何确定浏览器是否为HTML5 Canvas提供硬件加速
- ios的硬件加速css3转换
- firefox中的vlc插件无法解码硬件加速