Animation: remove Ereignis
Baseline
Weitgehend verfügbar
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit Juli 2020 browserübergreifend verfügbar.
Das remove Ereignis des Animation Interfaces tritt auf, wenn die Animation vom Browser automatisch entfernt wird.
Syntax
Verwenden Sie den Ereignisnamen in Methoden wie addEventListener() oder setzen Sie eine Ereignis-Handler-Eigenschaft.
addEventListener("remove", (event) => { })
onremove = (event) => { }
Ereignistyp
Ein AnimationPlaybackEvent. Erbt von Event.
Beispiele
>Entfernen von ersetzten Animationen
In diesem Beispiel haben wir ein <button id="start"> Element und einen Ereignislistener, der ausgeführt wird, wann immer sich die Maus bewegt. Der mousemove Ereignis-Handler richtet eine Animation ein, die das <button> an die Position des Mauszeigers animiert. Dies könnte zu einer großen Liste von Animationen führen, die ein Speicherleck verursachen könnte. Aus diesem Grund entfernen moderne Browser automatisch vorwärts-füllende Animationen, die von anderen Animationen überschrieben werden.
Die Anzahl der erstellten Animationen wird angezeigt. Ein remove Ereignislistener wird verwendet, um die Anzahl der entfernten Animationen zu zählen und anzuzeigen.
Alle bis auf eine der Animationen sollten schließlich entfernt werden.
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
:root,
body {
margin: 0;
padding: 0;
height: 100%;
}
button {
margin: 0.5rem 0;
}
JavaScript
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();
});
Ergebnis
Spezifikationen
| Spezifikation |
|---|
| Web Animations> # dom-animation-onremove> |
| Web Animations> # remove-event> |
Browser-Kompatibilität
Siehe auch
- Web Animations API
Animation,AnimationPlaybackEventAnimation.replaceState, um zu prüfen, ob eine Animation entfernt wurdeAnimation.persist(), um die Entfernung einer Animation zu verhindern