Animation: remove 事件
语法
在诸如 addEventListener() 之类的方法中使用事件名称,或设置事件处理程序属性。
js
addEventListener("remove", (event) => { })
onremove = (event) => { }
事件类型
一个 AnimationPlaybackEvent 对象。继承自 Event。
事件属性
除了下面列出的属性之外,父接口 Event 的属性也可使用。
AnimationPlaybackEvent.currentTime只读-
生成事件的动画的当前时间。
AnimationPlaybackEvent.timelineTime只读-
生成事件的动画的时间线时间值。
示例
移除被替换的动画
在此示例中,我们有一个 <button id="start"> 元素,以及一个在鼠标移动时运行的事件监听器。<a href="/en-US/docs/Web/API/Element/mousemove_event" title="mousemove"> 事件处理程序会设置一个动画,该动画会将 mousemove<button> 元素动画到鼠标指针的位置。这可能会导致动画列表非常庞大,从而引起内存泄漏。出于这个原因,现代浏览器会自动移除被其他动画覆盖的前向填充动画。
将显示创建的动画数量。remove 事件监听器用于计数并显示被移除的动画数量。
所有动画(除一个外)最终都应该被移除。
HTML
html
<button id="start">Click to drag</button>
<br />
<button id="reset">Reset example</button>
<p>
Click the button to start the animation (disabled by default to protect those
who suffer migraines when experiencing such animations).
</p>
<p>Animations created: <span id="count-created">0</span></p>
<p>Animations removed: <span id="count-removed">0</span></p>
CSS
css
:root,
body {
margin: 0;
padding: 0;
height: 100%;
}
button {
margin: 0.5rem 0;
}
JavaScript
js
const button = document.querySelector("#start");
let created = 0;
let removed = 0;
button.addEventListener(
"click",
() => {
document.body.addEventListener("mousemove", (event) => {
const animation = button.animate(
{ transform: `translate(${event.clientX}px, ${event.clientY}px)` },
{ duration: 500, fill: "forwards" },
);
created++;
showCounts();
// the remove event fires after the animation is removed
animation.addEventListener("remove", () => {
removed++;
showCounts();
});
});
},
{ once: true },
);
function showCounts() {
document.getElementById("count-created").textContent = created;
document.getElementById("count-removed").textContent = removed;
}
const reset = document.querySelector("#reset");
reset.addEventListener("click", () => {
document.location.reload();
});
结果
规范
| 规范 |
|---|
| Web 动画 # dom-animation-onremove |
| Web 动画 # remove-event |
浏览器兼容性
加载中…
另见
- Web Animations API
Animation,AnimationPlaybackEventAnimation.replaceState,用于检查动画是否已被移除Animation.persist(),用于防止动画被移除