The transitionstart event is fired when a CSS transition has actually started, i.e., after any transition-delay has ended.
This event is not cancelable.
The transitionstart event is fired when a CSS transition has actually started, i.e., after any transition-delay has ended.
This event is not cancelable.
Use the event name in methods like addEventListener(), or set an event handler property.
js
addEventListener("transitionstart", (event) => {});
ontransitionstart = (event) => {};
A TransitionEvent. Inherits from Event.
Also inherits properties from its parent Event.
TransitionEvent.propertyName Read only
A string containing the name CSS property associated with the transition.
TransitionEvent.elapsedTime Read only
A float giving the amount of time the transition has been running, in seconds, when this event fired. This value is not affected by the transition-delay property.
TransitionEvent.pseudoElement Read only
A string, starting with ::, containing the name of the pseudo-element the animation runs on. If the transition doesn't run on a pseudo-element but on the element, an empty string: ''.
This code adds a listener to the transitionstart event:
js
element.addEventListener("transitionstart", () => {
console.log("Started transitioning");
});
The same, but using the ontransitionstart property instead of addEventListener():
js
element.ontransitionstart = () => {
console.log("Started transitioning");
};
In the following example, we have a simple <div> element, styled with a transition that includes a delay:
html
<div class="transition">Hover over me</div>
<div class="message"></div>
css
.transition {
width: 100px;
height: 100px;
background: rgba(255, 0, 0, 1);
transition-property: transform, background;
transition-duration: 2s;
transition-delay: 1s;
}
.transition:hover {
transform: rotate(90deg);
background: rgba(255, 0, 0, 0);
}
To this, we'll add some JavaScript to indicate where the transitionstart and transitionrun events fire.
js
const transition = document.querySelector(".transition");
const message = document.querySelector(".message");
transition.addEventListener("transitionrun", () => {
message.textContent = "transitionrun fired";
});
transition.addEventListener("transitionstart", () => {
message.textContent = "transitionstart fired";
});
transition.addEventListener("transitionend", () => {
message.textContent = "transitionend fired";
});
The difference is that:
| Specification |
|---|
| CSS Transitions # transitionstart |
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | WebView Android | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | |
transitionstart_event |
74 | 12 | 53 |
10Theontransitionstart event handler property is not supported. To listen to this event, use element.addEventListener('transitionstart', function() {});.
|
62 | 13.1
12The event handler exists but will never be called. |
74 | 74 | 53 | 53 | 13.4
12The event handler exists but will never be called. |
11.0 |
TransitionEvent interfacetransition, transition-delay, transition-duration, transition-property, transition-timing-functiontransitionend, transitionrun, transitioncancel© 2005–2023 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/Element/transitionstart_event