The HTML ontransitionrun event
The HTML ontransitionrun attribute runs JavaScript when a CSS transition is created (before any delay). It is an inline handler for the transitionrun event; in modern code prefer addEventListener('transitionrun', …).
Overview
The ontransitionrun event attribute runs JavaScript when a CSS transition is created. In JavaScript the event itself is named transitionrun — drop the on prefix when you call addEventListener.
It is a CSS transition event. The handler receives a TransitionEvent with the propertyName that transitioned, which is the clean way to chain an action after a CSS transition completes.
You can wire this up with the inline ontransitionrun HTML attribute, but the modern, recommended approach is element.addEventListener('transitionrun', handler) in JavaScript. That keeps behavior out of your markup, lets you attach several handlers to the same event, and makes them easy to remove. The inline attribute is fine for quick demos.
Syntax
<element ontransitionrun="handler()">…</element>
element.addEventListener('transitionrun', handler);
Best practices
- Prefer
element.addEventListener('transitionrun', handler)over the inlineontransitionrunattribute — it separates behavior from markup and allows multiple handlers. - Use it to run code after a CSS transition instead of guessing with a timer.
- Check
event.propertyNamewhen several properties transition at once. - Respect
prefers-reduced-motionfor the transitions these events track.
Frequently asked questions
What is the ontransitionrun event?
transitionrun.How do I run code after a CSS transition ends?
Which property finished transitioning?
event.propertyName from the TransitionEvent.Should I use the ontransitionrun attribute or addEventListener?
addEventListener('transitionrun', …) in JavaScript. The inline ontransitionrun attribute works but mixes behavior into the markup and allows only one handler per element.