Web animations can significantly improve user experience but can also impact website performance if not implemented carefully. In this article, I will compare three different approaches to animating a circle element that pulses in size. I’ll be using CSS, unoptimized JavaScript, and optimized JavaScript, and I'll show you how to measure their performance using Chrome DevTools.
Animations are a key part of modern web design. They can be implemented using various methods, most commonly with pure CSS or JavaScript. However, not every method performs equally well. To demonstrate this, I decided to test three different approaches:
The project is available on GitHub. You can easily download and try it out.
git clone https://github.com/TomasDevs/animation-performance-test.git
cd animation-performance-test
Once you have it downloaded, check the folders css-animation, js-animation-optimized, and js-animation-unoptimized.
Try the project on GitHub
To measure performance, I used Chrome DevTools' Performance panel. Each animation was run for 10 seconds.
Source: Created by TomasDevs (2024)
Notes:
CSS animations tend to perform better because they are offloaded to the browser's native rendering engine, especially when working with properties like transform or opacity. This animation is highly efficient with minimal impact on scripting and rendering times.
Source: Created by TomasDevs (2024)
Notes:
The optimized JS version uses requestAnimationFrame and a smooth sine wave function to manage the animation. While it requires more scripting time than CSS animations, it still runs fairly efficiently and keeps the rendering and painting times low.
Source: Created by TomasDevs (2024)
Notes:
The unoptimized JS version uses a simple loop without consideration for timing progression. This leads to much higher scripting, rendering, and painting times due to inefficient calculations for each frame of the animation.
What are your experiences with optimizing web animations? Do you have any additional tips or tricks for boosting performance? Let me know in the comments below!
Disclaimer: All resources provided are partly from the Internet. If there is any infringement of your copyright or other rights and interests, please explain the detailed reasons and provide proof of copyright or rights and interests and then send it to the email: [email protected] We will handle it for you as soon as possible.
Copyright© 2022 湘ICP备2022001581号-3