2014-09-24 62 views
5

我一直想知道在动画性能方面什么更好 - Javascript或CSS3。 在这个页面你有GSAP,jQuery和CSS3之间的对比:使用Javascript或CSS3动画?

http://css-tricks.com/myth-busting-css-animations-vs-javascript/

向下滚动到性能的比较。现在我的问题如下:

CSS3迟早会比Javascript(GSAP在这种情况下)更快?那么我们应该使用CSS3还是使用Javascript编程动画?

更新:另一个网站:

http://greensock.com/transitions/

,因为它看起来现在,GSAP是在很多方面比CSS3快,但在3D转换CSS3更快。

现在的问题仍然是:CSS3会比GSAP(或其他类似的框架)更快吗?

+0

显然CSS的速度总是比js快,因为CSS是一个浏览器内置库,但是如果你想跨浏览器支持,那么js是要走的路了 – 2014-09-24 07:19:32

+0

看看我发布的页面。他测试了GSAP vs CSS3,此时它比CSS3快3倍。 – 2014-09-24 07:34:02

+0

直到现在我还不知道GSAP是什么,听起来很棒! <3 – 2014-09-24 07:50:38

回答

4

这里的动画是如何工作的一个近似值:

  • CSS3:“请为平稳过渡这一尽可能合理地”

  • 的JavaScript(天真): “好吧,你首先移动这里,那么您将在这里,然后这里 ...你跟得上?” [浏览器:]“打造你的想法!”

  • 的JavaScript(增量时间):“好吧,移动这里哎呀,你慢好了,搬过来这里所以看起来你不落后。”

  • jQuery:“我不在乎它是如何完成的,只是做到了,再见!

在我看来,获胜者是CSS3。

+0

这就是说,当你需要为呈现给画布的东西(WebGL)设置动画时,你可能会诉诸JavaScript /增量时间。 – MJB 2014-09-24 07:22:44

+0

@DatProgram非常真实。这是我写的这份清单中的第二好。由于您无法在画布元素上使用CSS,因此它首先变为第一。 – 2014-09-24 07:23:22

+2

不要被愚弄CSS3动画是完全不同的算法。它们具有本地代码的优点,并且可能不受JS引擎的单线程限制,但它们很可能使用相同类型的帧计算逻辑(这没什么不妥)。对于基于JS的动画来说,真正的挑战在于他们必须与JavaScript中的所有其他事物共享时间和执行(因为是单线程),所以它们并不总能够在他们想要的时候执行。 – jfriend00 2014-09-24 07:23:26

4

CSS3动画比JavaScript动画更快,更平滑,因为它们可以被优化,并可能被浏览器/ GPU硬件加速。另一方面,JS动画通常不那么流畅,因为动画的每一帧必须被明确地解释为渲染。

另外,JS动画主要用于不支持CSS3的较旧的浏览器,这是相对较新的。

+0

这是一个更清晰,技术性的答案。谢谢! – rnevius 2014-09-24 07:20:02

+1

CSS3移动版! – Paul 2014-09-24 07:29:07

+0

你可以看看我发布的页面吗?他对它进行了测试,目前GSAP动画比CSS3动画快3倍。或者你有你的声明来源? – 2014-09-24 07:32:36

2

似乎只有四个 css属性获得真正的硬件加速,Paul Lewis和Paul Irish在这里解释:http://www.html5rocks.com/en/tutorials/speed/high-performance-animations/(非常有趣的阅读!)。 这些是:位置,比例,旋转和不透明度 所有其他CSS属性在大多数浏览器中都没有任何效果,因此可能会很慢。

所以是的,一些CSS动画已经非常流畅,其余的会更快。 特别是在移动设备上。(更多技术的东西在其他答案)

但不久之后,GSAP和jQuery等(底层)将改变他们的动画方法。他们甚至可以选择速度更快的方法,具体取决于网站运行的设备。

(例如:你已经可以使用公交的jQuery插件使用CSS3动画从jQuery的http://ricostacruz.com/jquery.transit/

所以:

将CSS3是不是JavaScript更快?

是。但是:

我们应该使用CSS3编写动画还是使用Javascript?

这是一个不同的故事,取决于您的需求。

如果您使用不透明度制作一个小小的悬停效果动画:CSS3是您前进的方式。简单,干净,快速。

对于复杂的动画,不同的交互等,您将需要使用JS,这也为您以后选择动画方法提供了灵活性。 特别是GSAP是荒谬的强大和易于编写。