Element: transitionstart event

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2020.

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.

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.

Event TransitionEvent

Event properties

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: ''.

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

desktop mobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
transitionstart event
Chrome – Full support
Chrome 74 (Release date: 2019-04-23)
footnote Full support
Edge – Full support
Edge 12 (Release date: 2015-07-29)
footnote Full support
Firefox – Full support
Firefox 53 (Release date: 2017-04-19)
footnote Full support
Opera – Full support
Opera 62 (Release date: 2019-06-27)
footnote Full support
Safari – Partial support
Safari 12 – 13 (Release date: 2018-09-17)
footnote Partial support
footnote The event handler exists but will never be called.
Safari – Full support
Safari 13.1 (Release date: 2020-03-24)
footnote Full support
Chrome Android – Full support
Chrome Android 74 (Release date: 2019-04-24)
footnote Full support
Firefox for Android – Full support
Firefox for Android 53 (Release date: 2017-04-19)
footnote Full support
Opera Android – Full support
Opera Android 53 (Release date: 2019-07-11)
footnote Full support
Safari on iOS – Partial support
Safari on iOS 12 – 13 (Release date: 2018-09-17)
footnote Partial support
footnote The event handler exists but will never be called.
Safari on iOS – Full support
Safari on iOS 13.4 (Release date: 2020-03-24)
footnote Full support
Samsung Internet – Full support
Samsung Internet 11 (Release date: 2019-12-05)
footnote Full support
WebView Android – Full support
WebView Android 74 (Release date: 2019-04-24)
footnote Full support
WebView on iOS – Partial support
WebView on iOS 12 – 13 (Release date: 2018-09-17)
footnote Partial support
footnote The event handler exists but will never be called.
WebView on iOS – Full support
WebView on iOS 13.4 (Release date: 2020-03-24)
footnote Full support

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
Partial support
Partial support
Has more compatibility info.

See also