How to Control CSS Animations with JavaScript
When it comes to animations on the web, developers need to measure the animation's requirements with the right technology -- CSS or JavaScript. Many animations are manageable with CSS but JavaScript will always provide more control. With document.getAnimations
, however, you can use JavaScript to manage CSS animations!
The document.getAnimations
method returns an array of CSSAnimation
objects. CSSAnimation
provides a host of information about the animation: playState
, timeline
, effect
, and events like onfinish
. You can then modify those objects to adjust animations:
// Make all CSS animations on the page twice as fast document.getAnimations().forEach((animation) => { animation.playbackRate *= 2; }); // Stop all CSS animations on the page document.getAnimations().forEach((animation) => { animation.cancel(); });
How could adjusting CSS animations on the fly be useful to developers? Maybe use the Battery API to stop all animations when the device battery is low. Possibly to stop animations when the user has scrolled past the animation itself.
I love the way you can use JavaScript to modify CSS animations. Developers used to need to choose between CSS and JavaScript -- now we have the tools to make them work together!