每次我访问带有CSS3动画的页面时,我的笔记本都会变得嘈杂(给我一个信号,表明它在那里做了一些繁重的工作)。如果至少结果动画足够顺畅,我会不在乎自己。但他们不是。我得到的结果是我的2.4 GHz Core 2 Duo配备8GB内存和专用的NVIDIA GeForce 320M(不多,但对于某些css来说应该足够了,没有?......)有些生涩,随机闪烁,在某些情况下拥有奇怪的神器......“动画”,这通常比它的JS等同......
有人对JS与CSS动画进行过任何比较吗?或者为实际使用提出CSS3好东西的基准测试(例如,它们中有多少可以同时在页面上没有严重挂起等)?是否有任何最佳实践(例如 - 这样做,不要这样做,或者您的浏览器会抓取 - 等等)?
答案 0 :(得分:18)
当CSS3不受支持时,我已经完成了一些CSS3过渡和Jquery .animate()回退的项目。
除了我自己以外,我有三台测试计算机:
我观察到的是,大多数时候,CSS3表现更好。
我的意思是“表现更好”只是它“感觉更好”:我没有尝试对性能进行基准测试,也没有采用科学的测试方法,我的观察结果不应仅仅取决于经验感觉。另请注意,我主要使用CSS3过渡而不是CSS3动画(即使用关键帧)。
然而,“更好”并不意味着“总是好”。在较旧的计算机上,Javascript和CSS3同样是滞后的。如果您的站点是JS或CSS3重,那么在版本9之前的IE总是很糟糕的体验,在版本8之前的IE总是一个真正的噩梦。 v4之前的Firefox更好,但在旧计算机上并不完美。
在所有情况下,必须正确应用CSS3:例如,我发现将div淡化为不透明度:0而不设置显示:完成时无处理总是一个坏主意... CSS3过渡是相当新的,没有真正的最佳实践存在,这是现在的反复试验。
在现代移动设备上(我拥有一些IOS,Android和BBOS设备),CSS3总是比Javascript更好:在iPad 1上,一个简单的$('img')。fadeOut()可能相当丑陋当CSS3过渡是干净的时候。
因此,总而言之,我的个人(和有限)经验告诉我们:
我希望它有所帮助。
答案 1 :(得分:12)
CSS3在某些浏览器中使用GPU加速,这意味着如果你有一个很棒的GFX卡,将会产生流畅,快速的动画效果。 CSS / JQ使用你的记忆的地方。
所以我真的不认为可以进行基准测试比较。
关于您可以使用多少动画,浏览器频繁更新且硬件是一个因素,这样做“使用指南”将非常困难。
还没有看到任何JS:)
有关GPU加速的更多信息,请参阅:
http://www.html5rocks.com/en/tutorials/speed/html5/#toc-hardware-accell
但是有一些关于这个主题的好文章:
http://www.netmagazine.com/opinions/css3-vs-javascript
http://www.whatcreative.co.uk/blog/tips/the-benefits-of-css3-vs-jquery/
答案 2 :(得分:2)
在某些项目的生产环境中使用css动画后,我不得不说这很痛苦。
我也使用TweenLite,这是我之前在Flash中使用过的最喜欢的动画库,并且已经为javascript和CSS重写了。
现在我对html5动画有足够的经验,我可以肯定地说TweenLite是最适合的工具。
我曾经为我的web开发人员使用css动画和过渡,并使用TweenLite作为旧浏览器的后备,但是当我将现代浏览器中的perf与CSS和TweenLite进行比较时,TweenLite版本几乎总是最流畅的。
由于开发人员写的这篇文章,我运行了这些测试:
http://www.greensock.com/transitions/
GSAP利用requestAnimationFrame
并进行了超级优化。它具有css3等效性能,具有更好的api,用于测序,控制,回调......
选择问题!我做了我的。
答案 3 :(得分:2)
这是新的(2012年12月起)Greensock:http://www.greensock.com/js/speed.html
您可以在jQuery,YUI,Zepto,Mootools,Dojo,TweenJS和GSAP等框架上对css3动画进行基准测试和比较javascript动画。