Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in English Always switch to English

Element : évènement transitionend

Baseline Large disponibilité

Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis octobre 2018.

L'évènement transitionend est déclenché lorsqu'une transition CSS est terminée. Dans le cas où une transition est supprimée avant d'avoir terminé, comme si la transition-property est supprimée ou si display est définie sur none, alors l'évènement n'est pas généré.

L'évènement transitionend est déclenché dans les deux sens — lorsqu'il termine la transition vers l'état transitionné, et lorsqu'il revient complètement à l'état par défaut ou non transitionné. Si aucune durée ou délai de transition n'est défini, si les deux sont à 0s ou si aucun n'est déclaré, il n'y a pas de transition et aucun des évènements de transition n'est déclenché. Si l'évènement transitioncancel est déclenché, l'évènement transitionend ne l'est pas.

Cet évènement n'est pas annulable.

Syntaxe

Utilisez le nom de l'évènement dans des méthodes comme addEventListener(), ou définissez une propriété de gestionnaire d'évènements.

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

ontransitionend = (event) => { }

Type d'évènement

Un objet TransitionEvent. Hérite de Event.

Event TransitionEvent

Exemples

Ce code récupère un élément qui a une transition définie et ajoute un écouteur pour l'évènement transitionend :

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

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

Le même exemple, mais en utilisant la propriété ontransitionend au lieu de addEventListener() :

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

transition.ontransitionend = () => {
  console.log("Transition terminée");
};

Exemple interactif

Dans l'exemple suivant, nous avons un simple élément HTML <div>, stylé avec une transition qui inclut un délai :

html
<div class="transition">Survolez-moi</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;
}

À cela, nous ajoutons du JavaScript pour indiquer que les évènements transitionstart, transitionrun, transitioncancel et transitionend sont déclenchés. Dans cet exemple, pour annuler la transition, cessez de survoler la boîte en transition avant la fin de la transition. Pour que l'évènement de fin de transition soit déclenché, restez sur la transition jusqu'à la fin de celle-ci.

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

el.addEventListener("transitionrun", () => {
  message.textContent = "transitionrun déclenché";
});

el.addEventListener("transitionstart", () => {
  message.textContent = "transitionstart déclenché";
});

el.addEventListener("transitioncancel", () => {
  message.textContent = "transitioncancel déclenché";
});

el.addEventListener("transitionend", () => {
  message.textContent = "transitionend déclenché";
});

L'évènement transitionend est déclenché dans les deux sens : lorsque la boîte a fini de tourner et que l'opacité atteint 0 ou 1, selon la direction.

S'il n'y a pas de délai ou de durée de transition, si les deux sont à 0s ou si aucun n'est déclaré, il n'y a pas de transition, et aucun des évènements de transition n'est déclenché.

Si l'évènement transitioncancel est déclenché, l'évènement transitionend ne l'est pas.

Spécifications

Spécification
CSS Transitions Module Level 1
# transitionend

Compatibilité des navigateurs

Voir aussi