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


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

propertyName — це властивість, яка доступна в об'єкті TransitionEvent. Вона повертає рядок із назвою CSS-властивості, зміна якої спричинила поточний перехід. Ця властивість є корисною під час відстеження переходів CSS і дозволяє програмістам визначати, яка саме властивість змінила своє значення. Кожного разу, коли відбувається CSS-перехід (transition), подія transitionend спрацьовує, і завдяки propertyName можна знати, що саме змінилося.

Зазвичай, TransitionEvent використовується разом з подіями transitionend, transitionstart або transitioncancel, що дозволяє програмістам контролювати завершення або початок переходів анімацій у CSS. Це зручно, коли на елементі відбуваються кілька CSS-переходів одночасно, і треба знати, яка саме властивість завершила свою анімацію. Наприклад, якщо на елементі змінюються колір і ширина одночасно, властивість propertyName допоможе дізнатися, що саме завершилося: зміна кольору чи зміна ширини.

Приклад використання:

element.addEventListener('transitionend', function(event) {
  console.log("Перехід завершено для властивості: " + event.propertyName);
});

У цьому прикладі подія transitionend викликається після завершення CSS-переходу. Властивість propertyName повертає назву властивості, що закінчила свій перехід, що дозволяє більш детально керувати поведінкою елемента після анімації.

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

автор: Bond

Порада

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

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

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

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

Коли працюєте з різними браузерами, варто враховувати специфіку переходів у CSS і перевіряти, як різні браузери обробляють події transitionend. Це дозволить уникнути непередбачених помилок, пов'язаних із варіаціями обробки подій у різних середовищах.

автор: Bond

Синтаксис

event.propertyName

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE
2 4 6 12.1 12
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
4.4 18 4 6
Підтримка: серверні переглядачі
Переглядач Node.js Deno
- -

Приклади

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

У цьому прикладі одночасно змінюються дві CSS-властивості: колір фону та ширина елемента. Використовуючи propertyName, можна відрізнити завершення переходу для кожної з цих властивостей. Це може бути корисним у випадках, коли потрібно виконувати різну логіку після завершення певних анімацій.

HTML

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

JS

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

box.addEventListener('transitionend', function(event) {
  if (event.propertyName === 'background-color') {
    console.log("Перехід кольору завершено");
  } else if (event.propertyName === 'width') {
    console.log("Перехід зміни ширини завершено");
  }
});

// Запуск переходу
box.style.backgroundColor = 'blue';
box.style.width = '300px';
автор: Bond

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

HTML

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

JS

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

box.addEventListener('transitionend', function(event) {
  if (event.propertyName === 'height') {
    box.style.backgroundColor = 'red';  // Зміна кольору після завершення анімації зміни висоти
  } else if (event.propertyName === 'background-color') {
    console.log("Усі переходи завершено");
  }
});

// Запуск анімації
box.style.height = '200px';
автор: Bond

У цьому прикладі, після натискання кнопки, змінюються три CSS-властивості елемента .box: колір фону, ширина і прозорість. Коли кожен перехід завершується, спрацьовує подія transitionend, і за допомогою властивості propertyName виводиться повідомлення про те, яка саме властивість завершила свій перехід. Користувач може бачити, яка з анімацій завершилася першою або останньою.

автор: Bond

Коментарі

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

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

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

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

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

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

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

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

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

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

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