Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

Element: transitionend-Ereignis

Baseline
Weitgehend verfügbar

Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit Oktober 2018 browserübergreifend verfügbar.

Das transitionend-Ereignis wird ausgelöst, wenn eine CSS-Transition abgeschlossen ist. Wird eine Transition vor ihrem Abschluss entfernt, etwa weil transition-property entfernt oder display auf none gesetzt wird, wird das Ereignis nicht ausgelöst.

Das transitionend-Ereignis wird in beide Richtungen ausgelöst: wenn der Übergang zum Zielzustand abgeschlossen ist und wenn die Rückkehr zum Standardzustand oder zum Zustand ohne Transition vollständig abgeschlossen ist. Wenn weder eine Verzögerung noch eine Dauer für die Transition festgelegt ist oder beide 0s betragen, findet keine Transition statt und keines der Transition-Ereignisse wird ausgelöst. Wird das transitioncancel-Ereignis ausgelöst, wird das transitionend-Ereignis nicht ausgelöst.

Dieses Ereignis kann nicht abgebrochen werden.

Syntax

Verwenden Sie den Ereignisnamen in addEventListener():

js
addEventListener("transitionend", (event) => { })

Alternativ können Sie einen Wert der Event-Handler-Eigenschaft der Schnittstelle zuweisen:

js
ontransitionend = (event) => { }

Ereignistyp

Ein TransitionEvent. Erbt von Event.

Event TransitionEvent

Beispiele

Dieser Code ruft ein Element ab, für das eine Transition definiert ist, und fügt einen Listener für das transitionend-Ereignis hinzu:

js
const transition = document.querySelector(".transition");

transition.addEventListener("transitionend", () => {
  console.log("Transition ended");
});

Dasselbe mit ontransitionend (beachten Sie jedoch, dass dadurch gegebenenfalls andere über ontransitionend hinzugefügte Event-Listener ersetzt werden):

js
const transition = document.querySelector(".transition");

transition.ontransitionend = () => {
  console.log("Transition ended");
};

Interaktives Beispiel

Im folgenden Beispiel verwenden wir ein einfaches <div>-Element, für das eine Transition mit Verzögerung definiert ist:

html
<div class="transition">Hover over me</div>
<div class="message"></div>
css
.transition {
  width: 100px;
  height: 100px;
  background: red;
  transition-property: transform, background;
  transition-duration: 2s;
  transition-delay: 1s;
}

.transition:hover {
  transform: rotate(90deg);
  background: transparent;
}

Dazu fügen wir JavaScript hinzu, das anzeigt, wann die Ereignisse transitionstart, transitionrun, transitioncancel und transitionend ausgelöst werden. Um die Transition in diesem Beispiel abzubrechen, bewegen Sie den Mauszeiger von der Box weg, bevor die Transition endet. Damit das Ereignis transitionend ausgelöst wird, lassen Sie den Mauszeiger bis zum Ende der Transition über der Box.

js
const message = document.querySelector(".message");
const el = document.querySelector(".transition");

el.addEventListener("transitionrun", () => {
  message.textContent = "transitionrun fired";
});

el.addEventListener("transitionstart", () => {
  message.textContent = "transitionstart fired";
});

el.addEventListener("transitioncancel", () => {
  message.textContent = "transitioncancel fired";
});

el.addEventListener("transitionend", () => {
  message.textContent = "transitionend fired";
});

Das transitionend-Ereignis wird in beide Richtungen ausgelöst: wenn die Drehung der Box abgeschlossen ist und die Deckkraft je nach Richtung den Wert 0 oder 1 erreicht.

Wenn weder eine Verzögerung noch eine Dauer für die Transition festgelegt ist oder beide 0s betragen, findet keine Transition statt und keines der Transition-Ereignisse wird ausgelöst.

Wird das transitioncancel-Ereignis ausgelöst, wird das transitionend-Ereignis nicht ausgelöst.

Spezifikationen

Spezifikation
CSS Transitions Module Level 1
# transitionend

Browser-Kompatibilität

Siehe auch