CSS transitions allow you to smoothly change property values over a set duration, creating more engaging and user-friendly web experiences without JavaScript.
What is a CSS Transition?
A CSS transition controls the speed of property changes. Instead of jumping instantly from one value to another, it lets the browser gradually animate the change over time.
Example:
button {
background-color: #3498db;
transition: background-color 0.3s ease;
}
button:hover {
background-color: #2980b9;
}
When hovered, the button color changes smoothly in 0.3 seconds.
CSS Transition Properties
- transition-property – Which CSS property to animate (
color
,transform
, etc.). - transition-duration – How long the transition lasts (e.g.,
0.5s
). - transition-timing-function – Animation pace (
ease
,linear
,ease-in
, etc.). - transition-delay – When to start the transition.
Shorthand:
transition: property duration timing-function delay;
Best Practices for Smooth Transitions
- Limit to GPU-friendly properties
Usetransform
andopacity
for best performance; avoid properties that trigger layout recalculations likewidth
ortop
. - Use reasonable durations
Most UI transitions work best between 0.2s – 0.5s. - Combine with :hover, :focus, and :active
This improves interactivity without extra JavaScript. - Avoid overuse
Too many transitions can slow performance and distract users.
Common Example: Fade In & Slide
.card {
opacity: 0;
transform: translateY(20px);
transition: opacity 0.4s ease, transform 0.4s ease;
}
.card.show {
opacity: 1;
transform: translateY(0);
}
Why Use CSS Transitions?
- Better UX: Adds visual feedback for user actions.
- Lightweight: No JavaScript required for simple animations.
- Performance-friendly: When optimized with GPU-accelerated properties.
Key Takeaways
- CSS transitions animate changes to properties over time.
- Use shorthand for cleaner code.
- Optimize by animating
transform
andopacity
. - Keep durations short for better UX.