Элемент: событие transitionrun
Базовая Широко поддерживается
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с сентября 2015 года.
Событие transitionrun срабатывает при первом создании CSS-перехода, т.е. до начала любого transition-delay.
Это событие нельзя отменить.
Синтаксис
Используйте имя события в методах, таких как addEventListener(), или установите обработчик события.
addEventListener("transitionrun", (event) => {});
ontransitionrun = (event) => {};
Тип события
Тип TransitionEvent. Наследуется от Event.
Свойства события
Также наследует свойства от родительского Event.
-
TransitionEvent.propertyNameТолько для чтения -
Строка, содержащая имя CSS-свойства, связанного с переходом.
-
TransitionEvent.elapsedTimeТолько для чтения -
Значение
float, представляющее время выполнения перехода в секундах, когда было сгенерировано это событие. Это значение не зависит от свойстваtransition-delay. -
TransitionEvent.pseudoElementТолько для чтения -
Строка, начинающаяся с
::, содержащая имя псевдоэлемента, на котором выполняется анимация. Если переход выполняется не на псевдоэлементе, а на элементе, то пустая строка:''.
Примеры
Этот код добавляет обработчик к событию transitionrun:
el.addEventListener("transitionrun", () => {
console.log(
"Transition is running but hasn't necessarily started transitioning yet",
);
});
То же самое, но с использованием свойства ontransitionrun вместо addEventListener():
el.ontransitionrun = () => {
console.log(
"Transition started running, and will start transitioning when the transition delay has expired",
);
};
Пример с интерактивной демонстрацией
В следующем примере у нас есть простой элемент <div>, стилизованный с помощью перехода, который включает задержку:
<div class="transition">Hover over me</div> <div class="message"></div>
.transition {
width: 100px;
height: 100px;
background: rgb(255 0 0 / 100%);
transition-property: transform, background;
transition-duration: 2s;
transition-delay: 1s;
}
.transition:hover {
transform: rotate(90deg);
background: rgb(255 0 0 / 0%);
}
К этому мы добавим JavaScript для указания, где срабатывают события transitionstart и transitionrun.
const el = document.querySelector(".transition");
const message = document.querySelector(".message");
el.addEventListener("transitionrun", () => {
message.textContent = "transitionrun fired";
});
el.addEventListener("transitionstart", () => {
message.textContent = "transitionstart fired";
});
el.addEventListener("transitionend", () => {
message.textContent = "transitionend fired";
});
Разница в том, что:
-
transitionrunсрабатывает при создании перехода (т.е. в начале любой задержки). -
transitionstartсрабатывает, когда фактическая анимация началась (т.е. в конце любой задержки).
Событие transitionrun произойдет, даже если переход будет отменён до истечения задержки. Если нет задержки перехода или задержка перехода отрицательная, оба события transitionrun и transitionstart срабатывают.
Спецификации
| Спецификация |
|---|
| CSS Переходы # transitionrun |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
transitionrun_event |
74 | 12 | 53 | 62 | 13.112Обработчик события существует, но никогда не будет вызван. |
74 | 53 | 53 | 13.412Обработчик события существует, но никогда не будет вызван. |
11.0 | 74 |
См. также
- Интерфейс
TransitionEvent - CSS свойства:
transition,transition-delay,transition-duration,transition-property,transition-timing-function - Связанные события:
transitionend,transitionstart,transitioncancel
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/Element/transitionrun_event