Web Animations API
This is an experimental technology
Because this technology's specification has not stabilized, check the compatibility table for usage in various browsers. Also note that the syntax and behavior of an experimental technology is subject to change in future versions of browsers as the specification changes.
The Web Animations API allows for synchronizing and timing changes to the presentation of a Web page, i.e. animation of DOM elements. It does so by combining two models: the Timing Model and the Animation Model.
Concepts and usage
The Web Animations API provides a common language for browsers and developers to describe animations on DOM elements. To get more information on the concepts behind the API and how to use it, read Using the Web Animations API.
Web Animations interfaces
Animation
- Provides playback controls and a timeline for an animation node or source. Can take an object created with the
KeyframeEffect.KeyframeEffect
constructor. KeyframeEffect
- Describes sets of animatable properties and values, called keyframes and their timing options. These can then be played using the
Animation.Animation()
constructor. AnimationTimeline
- Represents the timeline of animation. This interface exists to define timeline features (inherited by
DocumentTimeline
and future timeline objects) and is not itself accessed by developers. DocumentTimeline
- Represents animation timelines, including the default document timeline (accessed via
Document.timeline
). AnimationEffectTiming
- An object containing timing properties returned by the
timing
attribute of aKeyframeEffect
. It inherits its properties fromAnimationEffectTimingReadOnly
, but in a non-read only form. SharedKeyframeList
- Represents a sequence of keyframes that can be shared between
KeyframeEffect
objects. By usingSharedKeyframeList
objects, multipleKeyframeEffect
objects can re-use the same keyframes without paying the cost of parsing them multiple times. AnimationEffectTimingProperties
Element.animate()
,KeyframeEffectReadOnly.KeyframeEffectReadOnly()
, andKeyframeEffect.KeyframeEffect()
all accept an optional dictionary object of timing properties.
Extensions to other interfaces
The Web Animations API adds some new features to document
and element
.
Extensions to the Document
interface
document.timeline
- The
DocumentTimeline
object representing the default document timeline. document.getAnimations()
- Returns an Array of
Animation
objects currently in effect on elements in thedocument
. -
Extensions to the
Element
interface Element.animate()
- A shortcut method for creating and playing an animation on an element. It returns the created
Animation
object instance.
Web Animations read-only interfaces
The following interfaces are included in the spec for purposes such as defining features used in multiple other places. You wouldn't directly use these in web development work, but they may be interesting for library authors to understand how the technology works so their implementations can be more effective, or for browser engineers looking for an easier reference than the spec provides.
AnimationEffectTimingReadOnly
- A dictionary object of timing properties, which are inherited by the mutable
AnimationEffectTiming
interface associated withKeyframeEffect
. AnimationEffectReadOnly
- Defines current and future "Animation Effects" like
KeyframeEffect
, which can be passed toAnimation.Animation
objects for playing, andKeyframeEffectReadOnly
which is used byKeyframeEffect
(inherited by CSS Animations and Transitions). KeyframeEffectReadOnly
- Describes sets of animatable properties and values that can be played using the
Animation.Animation()
constructor, and which are inherited byKeyframeEffect
.
Specifications
Specification | Status | Comment |
---|---|---|
Web Animations | Working Draft | Initial definition |
Browser compatibility
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|
Basic support (Element.animate()) | 36.0 |
48 (48) | No support |
29 |
No support |
Feature | Android | Android Webview | Firefox Mobile (Gecko) | Firefox OS (Gecko) | IE Phone | Opera Mobile | Safari Mobile | Chrome for Android |
---|---|---|---|---|---|---|---|---|
Basic support | No support | 42.0 | 48.0 (48) | No support | No support | No support | No support | 42.0 |
See also
- Using the Web Animations API
- Web Animations demos
- Polyfill
- Firefox's current implementation: AreWeAnimatedYet
License
© 2016 Mozilla Contributors
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-us/docs/web/api/web_animations_api