代码之家  ›  专栏  ›  技术社区  ›  desau

CSS转换与JS动画包的性能比较

  •  60
  • desau  · 技术社区  · 15 年前

    script.aculo.us , scripty2 , jsAnim MooTools , $fx

    我试过各种各样的测试 游猎 但我看不出有什么区别。我认为CSS转换应该是硬件加速的。


    更新 :

    我试过用Scriptaculous' Effect.Fade 在5个不同的div上(每个div包含一个带有一些线的画布)。使用CSS转换做完全相同的事情,我看在性能上完全没有区别。两个都是非常顺利的一个DIV/画布,但都是非常缓慢,当我做了两个以上的时间。

    我试过这个了 Safari 4、5(OSX) , 谷歌Chrome 5 FireFox 3.7pre版

    作为对Upcelix回应的回应,你不仅仅局限于 hover transitionable 风格例如,在JavaScript中设置元素的不透明度(在指定 transitionPropery transitionDuration 对于该元素)。

    4 回复  |  直到 12 年前
        1
  •  25
  •   Mechlar    6 年前

    是的,有区别,CSS要快得多。可能很难看到,直到你得到许多运行在同一时间或更多的他们这样做。但是CSS动画是有限的。在大多数情况下,它们实际上只在 :hover 事件使用JavaScript,您可以在任何事件中执行动画: click , mouseover mousemove , mouseout , keyup , keydown

    在我看来,jQuery是2010年JavaScript动画的最佳选择 jQuery Demos

        2
  •  15
  •   Mechlar    12 年前

    再加上upclix(正确)的回答:JavaScript是一种解释语言,浏览器的JS引擎必须在运行时解析和执行每条指令(我知道有JS编译器,比如V8(在Chrome中使用),但原理不变)。

    另一方面,浏览器可以在本地实现CSS转换,例如在C/C++或其他语言中。这段代码将被编译成机器语言。

    如果CSS转换是硬件加速还是非硬件加速,取决于浏览器使用的技术、浏览器运行的平台等。

        3
  •  5
  •   Mourner    14 年前

    你会注意到手机浏览器(iPhone、Android等)的不同。

        4
  •  4
  •   Mircea    10 年前

    CSS动画的优点是由浏览器处理。快速计算和优化是可用的。在我看来,网络动画的表现应该看一个“整体”的观点。毕竟一个动画,就FPS而言,不能比浏览器刷新快。

    真正的性能级别由整体UI性能给出。JS和CSS动画看起来很相似。但是CSS动画获胜,因为它们不会阻止UI线程。

    http://www.phpied.com/css-animations-off-the-ui-thread/