CSS Transitions与JS动画包的性能

des*_*sau 60 javascript css animation css3

我想知道使用CSS Transitions与任何各种JavaScript动画库的性能有什么不同吗?(script.aculo.us,scripty2,jsAnim,MooTools,$fx,等等).

我在SafariChrome中尝试了各种测试,但实际上我没有看到任何差异.我认为CSS Transitions应该是硬件加速的.


更新:

我尝试Effect.Fade在5种不同的DIV上使用Scriptaculous (每种DIV都包含一些带有一些线条的画布).使用CSS过渡做同样的事情,我看到性能完全没有区别.两个DIV/Canvas都非常流畅,但是当我一次超过2个时,两者都很慢.

我在Safari 4,5(OSX),谷歌Chrome 5FireFox 3.7pre中尝试过这个.全面的结果.

在回答UpHelix的回复时,您不仅限于hover等等.您可以通过更改任何transitionable样式来触发转换.例如,在JavaScript中设置元素的不透明度(之后,您已为该元素指定了transitionProperyand transitionDuration).

UpH*_*lix 25

是的,有区别,CSS更快.可能很难看到,直到你让许多人同时跑步或者他们做得越多.CSS动画虽然有限.在大多数情况下,他们真的只能参加:hover活动.:使用JavaScript你可以在任何情况下执行的动画click,mouseover,mousemove,mouseout,keyup,keydown,等.

在我看来,jQuery是迄今为止JavaScript动画的最佳选择.请参阅jQuery演示

  • 您可以使用JS事件处理程序来触发CSS动画(例如,通过向元素添加类名,或直接设置相关的样式属性),从而获得两全其美的效果. (36认同)
  • @ Swordfish0321不,它没有.你只需使用JS来触发CSS动画.然后使用CSS Transition完成动画本身. (4认同)
  • "Jquery是迄今为止js动画的最佳选择" - 需要引用,我担心 (4认同)
  • "查询是迄今为止JavaScript动画的最佳选择".你基于这个陈述是什么? (3认同)
  • @Mircea我在想人们发现该声明有效的唯一原因是因为该声明写于2010年。此后,情况发生了很大变化。到目前为止,jQuery动画库是最慢的(比其他JavaScript动画包慢20倍)。 (2认同)

Mar*_*pel 15

添加到Uphelix的(正确的)答案:JavaScript是一种解释型语言,浏览器的JS引擎必须在运行时解析并执行每条指令(我知道存在JS编译器,如V8(在Chrome中使用),但是原则保持不变).

另一方面,浏览器可以本地实现CSS转换,例如在C/C++或其他方面.此代码将编译为机器语言.

如果CSS转换是否是硬件加速,则取决于浏览器使用的技术,浏览器运行的平台等.


Mou*_*ner 5

您会注意到移动浏览器(iPhone、Android 等)上的差异。