动画:persist() 方法
基线 广泛可用
此功能已经过完善,并在许多设备和浏览器版本中运行。 它自 2020 年 3 月.
报告反馈
语法
persist()
方法是 Web 动画 API 的 Animation
接口的显式方法,它会持久化动画,防止动画在被另一个动画替换时 自动删除。persist()
js
参数
无。
返回值
示例
无 (undefined
).
使用 persist()
- 在本例中,我们有三个按钮
- "添加持久动画" 和 "添加瞬态动画" 都会为红色方块添加一个新的变换动画。 动画方向交替:因此第一个是左到右,第二个是右到左,依此类推。"添加持久动画" 会在创建的动画上调用
persist()
。
第三个按钮 "取消动画" 会取消最近添加的动画。
HTML
该示例显示了所有未取消动画的列表,按添加顺序排列,以及每个动画的
replaceState
。<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
html
div {
width: 100px;
height: 100px;
background: red;
transform: translate(100px);
}
JavaScript
persist()
方法是 Web 动画 API 的 Animation
接口的显式方法,它会持久化动画,防止动画在被另一个动画替换时 自动删除。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();
}
css
结果
请注意,添加新的瞬态动画将替换任何先前添加的瞬态动画。 这些动画将被自动删除,并且它们的 replaceState
将为 "removed"
。 但是,持久动画将不会被删除。
规范
另请注意,删除的动画不会影响显示;<div> 的位置由最新的活动或持久动画决定。 |
---|
规范 # Web 动画 |
浏览器兼容性
dom-animation-persist
另请参阅
- Web 动画 API
- 启用 JavaScript 以查看数据。
Animation
用于您可以用来控制网页动画的其他方法和属性。- Animation.replaceState