我想知道使用 CSS Transitions 与使用任何各种 JavaScript 动画库在性能上有什么不同吗? (script.aculo.us
, scripty2
, jsAnim
, MooTools
, $fx
等)。
我在 Safari 和 Chrome 中尝试过各种测试,但实际上我没有看到任何区别。我认为 CSS Transitions 应该是硬件加速的。
更新:
我已经尝试在 5 个不同的 DIV 上使用 Scriptaculous 的 Effect.Fade
(每个包含带有一些线条的 Canvas )。使用 CSS 过渡做完全相同的事情,我发现性能上绝对没有差异。两者在一个 DIV/Canvas 上都非常流畅,但当我一次做超过 2 个时,两者都非常慢。
我已经在 Safari 4、5 (OSX)、Google Chrome 5 和 FireFox 3.7pre 中尝试过。整体结果相同。
在回答 UpHelix 的回应时,您不仅限于 hover
等。您可以通过更改任何 transitionable
样式来触发转换。例如,在 JavaScript 中设置元素的不透明度(之后,您已经为该元素指定了 transitionPropery
和 transitionDuration
)。
最佳答案
是的,有区别,CSS 快得多。直到您同时运行许多人或他们运行的次数越多,才可能很难看到。尽管 CSS 动画是有限的。在大多数情况下,它们实际上只对 :hover
事件有效。使用 JavaScript,您可以在任何事件中执行动画:click
、mouseover
、mousemove
、mouseout
、keyup
, keydown
等
在我看来,jQuery 是 2010 年 JavaScript 动画的最佳选择。参见 jQuery Demos
关于javascript - CSS Transitions 与 JS 动画包的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2999749/