Every time I visit a page with CSS3 animations, my notebook becomes noisy (gives me a signal that it does some heavy job on there). I wouldn't care myself if at least resulting animations were smooth enough. But they are not. What I get as a result on my 2.4 GHz Core 2 Duo with 8GB of RAM and dedicated NVIDIA GeForce 320M (not much, but should be enough for some css, no?...) is some jerky, randomly flickering, in some cases having weird artifacts... "animation", that is often worse then it's JS equivalent...
Has anyone done any comparisons of JS vs CSS animations? Or benchmarking of proposed CSS3 goodies for real-world usage (for example how many of them can be on the page simultaneously without serious hang, etc)? Are there any best practices (like - do this, do not do that, or your browser will crawl - and such)?
Compared with animating elements using JavaScript, CSS animations can be easier to create. They can also give better performance, as they give the browser more control over when to render frames, and to drop frames if necessary.
CSS animations, transforms and transitions are not automatically GPU accelerated, and instead execute from the browser's slower software rendering engine. So what exactly forces the browser to swap to GPU mode? Many browsers provide GPU acceleration by means of certain CSS rules.
CSS animations are great for websites that want to add dynamic, engaging content without placing much more weight on the page. Since they don't require extra scripts, CSS animations are unlikely to slow down your pages.
CSS has fairly good performance as it offloads animation logic onto the browser itself. This lets the browser optimize DOM interaction and memory consumption and most importantly, uses the GPU to improve performance. On the other hand, Javascript performance can range from reasonably faster to much slower than CSS.
I've done a few project with CSS3 transitions and Jquery .animate() fallback when CSS3 is not supported.
I've three testing computers besides my own :
What I observed is that most of the times, CSS3 performs better.
What I mean by "performs better" is only that it "feels better" : I did not try to benchmark the perfs, nor to apply a scientific testing method, and my observation should not be taken for more than an empiric feel. Also note that I mainly use CSS3 transitions and not CSS3 Animations (ie with keyframes).
However, "better" does not here mean "always good". On the older computers, Javascript and CSS3 are equally laggy. If your site is JS or CSS3 heavy, IEs before version 9 are always a poor experience, IEs before version 8 always a true nightmare. Firefox before v4 is better but far than perfect on older computers.
In all case, CSS3 must be correctly applied : e.g I found that fading a div to opacity: 0 without setting display:none when finished is always a bad idea... CSS3 transition are quite new that no real best practices exists, it's trial and error for now.
On modern mobile devices (I own a few IOS, Android and BBOS devices), the CSS3 is always way better than Javascript : on an iPad 1, a simple $('img').fadeOut() can be quite ugly when the CSS3 transition is clean.
So, to conclude, my personal (and limited) experience tells :
I hope it helps.
CSS3 uses GPU acceleration in some browsers, which means if you got a great GFX card, will result in smooth, fast animations. Where CSS/JQ uses your memory.
So i don't really think it's possible to a hands down benchmark test comparison.
About how many animations you can use, with the browser being updated so frequently and the hardware being a factor, it's going to be very hard to do such "usage guides".
Haven't seen any for JS either :)
For more on GPU acceleration see:
http://www.html5rocks.com/en/tutorials/speed/html5/#toc-hardware-accell
There are some great articles on the subject though:
http://www.netmagazine.com/opinions/css3-vs-javascript
http://www.whatcreative.co.uk/blog/tips/the-benefits-of-css3-vs-jquery/
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With