This is an experimental technology
Because this technology's specification has not stabilized, check the compatibility table for usage in various browsers. Also note that the syntax and behavior of an experimental technology is subject to change in future versions of browsers as the specification changes.

The transitionstart event is fired when a CSS transition has actually started, i.e. after any transition-delay has ended.

General info

document, element
Default Action


Property Type Description
target Read only EventTarget The event target (the topmost target in the DOM tree).
type Read only DOMString The type of event.
bubbles Read only Boolean Whether the event normally bubbles or not
cancelable Read only Boolean Whether the event is cancellable or not?
propertyNameRead only DOMString The name of the CSS property associated with the transition.
elapsedTimeRead only Float The amount of time the transition has been running, in seconds, as of the time the event was generated. This value is not affected by the value of transition-delay.
pseudoElementRead only DOMString The name (beginning with two colons) of the CSS pseudo-element on which the transition occured (in which case the target of the event is that pseudo-element's corresponding element), or the empty string if the transition occurred on an element (which means the target of the event is that element).


In the following example, we have a simple <div> element, styled with a transition that includes a delay:

div {
  width: 200px;
  height: 200px;
  background: rgba(255,0,0,1);
  transition-property: transform background;
  transition-duration: 2s;
  transition-delay: 2s;
div: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.

var divElem = document.querySelector('div');
divElem.addEventListener('transitionrun', function() {
  console.log('transitionrun fired');
divElem.addEventListener('transitionstart', function() {
  console.log('transitionstart 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).


Specification Status Comment
CSS Transitions
The definition of 'transitionstart' in that specification.
Working Draft Initial definition.

Browser compatibility

Feature Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Basic support ? (Yes) 53 (53) 10 ? ?
Feature Android Edge Firefox Mobile (Gecko) IE Phone Opera Mobile Safari Mobile
Basic support ? (Yes) 53.0 (53) ? ? ?

See also

Document Tags and Contributors

 Contributors to this page: teoli, birtles, chrisdavidmills, erikadoyle, rolfedh, fscholz, cvrebert
 Last updated by: teoli,