JS властивість Event.animationend


Загальний опис

animationend — це подія, яка виникає у веб-браузері, коли CSS-анімація завершила своє виконання. Ця подія є частиною веб-стандарту для обробки анімацій і дозволяє JavaScript-коду реагувати на завершення анімаційних ефектів на веб-сторінці. Подія animationend може бути використана для виконання додаткових дій, як-от зміна стилів, відправлення аналітики або ініціалізація наступних анімацій.

Щоб використовувати подію animationend в JavaScript, потрібно додати обробник подій до елемента, на якому виконується анімація. Це можна зробити за допомогою методу addEventListener(), який дозволяє визначити функцію, що виконується, коли анімація завершується. Наприклад:

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

element.addEventListener('animationend', function(event) {
  console.log('Анімація завершилася на елементі:', event.target);
});

У цьому прикладі, коли анімація на елементі з класом .animated-element завершиться, в консолі браузера з'явиться повідомлення із зазначенням, на якому елементі це сталося.

Подія animationend може бути корисною в різних ситуаціях, наприклад, коли потрібно очистити DOM після анімації видалення елемента, або коли необхідно запускати наступні анімації в певній послідовності. Подія надає інформацію про властивості анімації, що завершилася, такі як її назва (animationName), тривалість (elapsedTime), та ім'я властивості CSS, яка була анімована.

Щоб обробляти різні анімації на одному елементі, можна використовувати об'єкт події event, який передається до обробника події. Цей об'єкт містить властивість animationName, що дозволяє визначити, яка саме анімація завершилася, і в залежності від цього виконати відповідні дії:

element.addEventListener('animationend', function(event) {
  if (event.animationName === 'fade-out') {
    event.target.style.display = 'none';
  }
});

У цьому прикладі, якщо анімація, що завершилася, має назву fade-out, елемент буде приховано.

автор: Bond

Порада

Подія animationend може бути корисною для динамічних інтерфейсів, де анімації використовуються для привертання уваги до важливих дій або переходів. Наприклад, можна змінити вигляд кнопки після завершення анімації підтвердження кліку.

автор: Bond
Порада

Якщо у вас є анімація, яка повторюється (наприклад, з animation-iteration-count: infinite), подія animationend не виникатиме, доки анімація не завершить усі повторення. Для відстеження кожного циклу анімації використовуйте подію animationiteration.

автор: Bond
Порада

Для підвищення продуктивності додайте і видаляйте обробники подій, коли вони більше не потрібні. Це особливо важливо для сторінок з великою кількістю анімацій, щоб уникнути витоків пам'яті та зниження продуктивності.

автор: Bond

Синтаксис

element.addEventListener('animationend', function(event) {
  // Ваш код тут
});

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
79 51 9 66 18 10*
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
79 79 51 9

Приклади

+ запропонувати свій приклад у пісочниці

У цьому прикладі після завершення анімації slide-in на елементі .box змінюється стиль бордера. Це може бути корисно для візуального зворотного зв'язку користувачу після виконання анімації.

HTML

<div class="box">перший елемент box</div>
<div class="box">другий елемент box</div>

JS

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

box.addEventListener('animationend', function(event) {
  if (event.animationName === 'slide-in') {
    event.target.style.border = '2px solid green';
    console.log('Анімація завершилася, бордер встановлено.');
  }
});
автор: Bond

Цей приклад демонструє ланцюгове виконання анімацій. Після завершення першої анімації fade-out на першому елементі, запускається друга анімація на іншому елементі. Це може бути використано для послідовного виконання анімаційних ефектів у складних інтерфейсах користувача.

HTML

<div class="first">перший елемент first</div>
<div class="first">другий елемент first</div>
<div class="second">перший елемент second</div>
<div class="second">другий елемент second</div>

JS

const firstElement = document.querySelector('.first');
const secondElement = document.querySelector('.second');

firstElement.addEventListener('animationend', function(event) {
  if (event.animationName === 'fade-out') {
    secondElement.classList.add('start-next-animation');
    console.log('Перша анімація завершилася, запущено наступну.');
  }
});
автор: Bond

У цьому прикладі кнопка на сторінці дозволяє користувачу запускати анімацію на квадраті. Коли анімація закінчується, подія animationend спрацьовує, змінюючи колір квадрата та показуючи повідомлення. Це дозволяє користувачам наочно побачити результат роботи з подією animationend і зрозуміти, як можна використовувати цю подію для створення інтерактивних веб-сторінок.

автор: Bond

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід