Syntax
Use the event name in methods like addEventListener(), or set an event handler property.
js
addEventListener("transitionstart", (event) => { })
ontransitionstart = (event) => { }
Event type
A TransitionEvent. Inherits from Event.
Examples
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");
};
Live example
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: red;
transition-property: transform, background;
transition-duration: 2s;
transition-delay: 1s;
}
.transition:hover {
transform: rotate(90deg);
background: transparent;
}
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:
- transitionrun fires when the transition is created (i.e., at the start of any delay).
- transitionstart fires when the actual animation has begun (i.e., at the end of any delay).
Specifications
| Specification |
|---|
| CSS Transitions Module Level 1 # transitionstart |
Browser compatibility
See also
- The
TransitionEventinterface - CSS properties:
transition,transition-delay,transition-duration,transition-property,transition-timing-function - Related events:
transitionend,transitionrun,transitioncancel