Loading lessons...
Transitions & Animation
Transitions & Animation
Make state changes feel smooth instead of abrupt.
Transition property
Control which properties transition:
| Class | CSS |
|---|---|
transition | common properties (color, bg, border, transform, etc.) |
transition-none | no transition |
transition-all | all properties |
transition-colors | color, bg, border-color, text-decoration-color, fill, stroke |
transition-opacity | opacity |
transition-shadow | box-shadow |
transition-transform | transform |
<button class="bg-sky-500 transition-colors hover:bg-sky-700">...</button>
Duration
duration-75(75ms),duration-100,duration-150,duration-200,duration-300,duration-500,duration-700,duration-1000.- Any value:
duration-1500,duration-[3s].
Timing function
ease-linear,ease-in,ease-out,ease-in-out.- Custom:
ease-[cubic-bezier(0.4,0,0.2,1)], or define--ease-*in@theme.
Delay
delay-75…delay-1000, any value.
<button class="transition-colors delay-150 duration-300 ease-in-out hover:bg-sky-700">...</button>
Animation
Built-in animations:
| Class | Keyframes |
|---|---|
animate-spin | infinite linear spin |
animate-ping | ping ripple |
animate-pulse | soft pulse |
animate-bounce | bounce |
<div class="animate-spin">...</div>
Custom animations:
@theme {
--animate-wiggle: wiggle 1s ease-in-out infinite;
@keyframes wiggle {
0%, 100% { transform: rotate(-3deg); }
50% { transform: rotate(3deg); }
}
}
Then use animate-wiggle.
TL;DR
transitionenables smooth property changes.duration-300,ease-in-out,delay-100tune timing.transition-colors/transition-transformlimit scope.animate-spin,animate-pulse,animate-bounceare built in.