I volontari di MDN non hanno ancora tradotto questo articolo in Italiano. Unisciti a noi e traducilo tu stesso.
Puoi anche consultare l’articolo in English (US).

The animationend event is fired when a CSS Animation has completed (but not if it aborts before reaching completion, such as if the element becomes invisible or the animation is removed from the element).

Bubbles Yes
Cancelable No
Interface AnimationEvent
Event handler property onanimationend


This example gets an element that's being animated and listens for the animationend event:

const animated = document.querySelector('.animated');

animated.addEventListener('animationend', () => {
  console.log('Animation ended');

The same, but using the onanimationend event handler property:

const animated = document.querySelector('.animated');

animated.onanimationend = () => {
  console.log('Animation ended');

Live example


<div class="animation-example">
    <div class="container">
        <p class="animation">You chose a cold night to visit our planet.</p>
    <button class="activate" type="button">Activate animation</button>
    <div class="event-log"></div>


.container {
  height: 3rem;

.event-log {
  width: 25rem;
  height: 2rem;
  border: 1px solid black;
  margin: .2rem;
  padding: .2rem;

.animation.active {
  animation-duration: 2s;
  animation-name: slidein;
  animation-iteration-count: 2;

@keyframes slidein {
  from {
    margin-left: 100%;
    width: 300%; 

  to {
    margin-left: 0%;
    width: 100%;


const animation = document.querySelector('p.animation');
const animationEventLog = document.querySelector('.animation-example>.event-log');
const applyAnimation = document.querySelector('.animation-example>button.activate');
let iterationCount = 0;

animation.addEventListener('animationstart', () => {
  animationEventLog.textContent = `${animationEventLog.textContent}'animation started' `;

animation.addEventListener('animationiteration', () => {
  animationEventLog.textContent = `${animationEventLog.textContent}'animation iterations: ${iterationCount}' `;

animation.addEventListener('animationend', () => {
  animationEventLog.textContent = `${animationEventLog.textContent}'animation ended'`;
  applyAnimation.textContent = "Activate animation";

animation.addEventListener('animationcancel', () => {
  animationEventLog.textContent = `${animationEventLog.textContent}'animation canceled'`;

applyAnimation.addEventListener('click', () => {
  animationEventLog.textContent = '';
  iterationCount = 0;
  let active = animation.classList.contains('active');
  if (active) {
    applyAnimation.textContent = "Cancel animation";
  } else {
    applyAnimation.textContent = "Activate animation";



Specification Status Comment
CSS Animations Working Draft Initial definition

Browser compatibility

Update compatibility data on GitHub
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung Internet
animationend eventChrome Full support 43Edge ? Firefox Full support YesIE ? Opera Full support 30Safari ? WebView Android Full support 43Chrome Android Full support 43Firefox Android Full support YesOpera Android Full support 30Safari iOS ? Samsung Internet Android ?


Full support  
Full support
Compatibility unknown  
Compatibility unknown

See also

Tag del documento e collaboratori

Hanno collaborato alla realizzazione di questa pagina: mdnwebdocs-bot, wbamberg, Sebastianz, mfluehr, Sheppy, fscholz, teoli, ethertank, louisremi
Ultima modifica di: mdnwebdocs-bot,