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 transitionrun event is fired when a CSS transition is first created, i.e. before any transition-delay has begun.
General info
| Bubbles | Yes | 
| Cancelable | No | 
| Target objects | document,element | 
| Interface | TransitionEvent | 
Properties
| Property | Type | Description | 
|---|---|---|
| target Read only | EventTarget | The event target (the topmost target in the DOM tree). | 
| typeRead only | DOMString | The type of event. | 
| bubblesRead only | Boolean | Whether the event normally bubbles or not | 
| cancelableRead only | Boolean | Whether the event is cancellable or not? | 
| propertyNameRead only | DOMString | The name of the CSS property associated with the transition. | 
| elapsedTime Read 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). | 
Examples
In the following example, we have a simple <div> element, styled with a transition that includes a delay:
<div></div>
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:
- transitionrunfires when the transition is created (i.e. at the start of any delay).
- transitionstartfires when the actual animation has begun (i.e. at the end of any delay).
Specifications
| Specification | Status | Comment | 
|---|---|---|
| CSS Transitions Level 2 The definition of 'transitionstart' in that specification. | Editor's Draft | Initial definition. | 
Browser compatibility
| Feature | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) | 
|---|---|---|---|---|---|---|
| Basic support | ? | No support | 53 (53) | No support | ? | ? | 
| Feature | Android | Edge | Firefox Mobile (Gecko) | IE Phone | Opera Mobile | Safari Mobile | 
|---|---|---|---|---|---|---|
| Basic support | ? | No support | 53.0 (53) | No support | ? | ? | 
See also
- The TransitionEventinterface
- transitionstart,- transitionend,- transitioncancel
- CSS properties: transition,transition-delay,transition-duration,transition-property,transition-timing-function.