The persist()
method of the Web Animations API's Animation
interface explicitly persists an animation, preventing it from being automatically removed when it is replaced by another animation.
The persist()
method of the Web Animations API's Animation
interface explicitly persists an animation, preventing it from being automatically removed when it is replaced by another animation.
js
persist()
None.
None (undefined
).
persist()
In this example, we have three buttons:
persist()
on the animation it creates.The example displays a list of all animations that have not been canceled, in the order they were added, along with each animation's replaceState
.
html
<div id="animation-target"></div> <button id="start-persistent">Add persistent animation</button> <button id="start-transient">Add transient animation</button> <button id="cancel">Cancel an animation</button> <ol id="stack"></ol>
css
div { width: 100px; height: 100px; background: red; transform: translate(100px); }
js
const target = document.getElementById("animation-target"); const persistentButton = document.getElementById("start-persistent"); const transientButton = document.getElementById("start-transient"); const cancelButton = document.getElementById("cancel"); persistentButton.addEventListener("click", () => startAnimation(true)); transientButton.addEventListener("click", () => startAnimation(false)); cancelButton.addEventListener("click", cancelTop); const stack = []; let offset = -100; function startAnimation(persist) { offset = -offset; const animation = target.animate( { transform: `translate(${100 + offset}px)` }, { duration: 500, fill: "forwards" }, ); stack.push(animation); if (persist) { animation.persist(); } // Add the animation to the displayed stack (implementation not shown) show(animation, offset); } function cancelTop() { stack.pop()?.cancel(); }
Note that adding a new transient animation will replace any previously added transient animation. Those animations will be automatically removed, and their replaceState
will be "removed"
. However, persistent animations will not be removed.
Also note that removed animations don't affect the display; the position of the <div>
is determined by the most recent active or persisted animation.
Specification |
---|
Web Animations # dom-animation-persist |
Desktop | Mobile | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | WebView Android | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | |
persist |
84 | 84 | 75 | No | 70 | 13.1 | 84 | 84 | 79 | 60 | 13.4 | 14.0 |
Animation
for other methods and properties you can use to control web page animation.Animation.replaceState
remove
event
© 2005–2023 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/Animation/persist