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.112The event handler exists but will never be called. |
74 | 74 | 53 | 53 | 13.412The event handler exists but will never be called. |
11.0 |
TransitionEvent
interfacetransition
, transition-delay
, transition-duration
, transition-property
, transition-timing-function
transitionend
, 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