CSS Animations and Transitions
Create smooth animations and transitions with pure CSS.
CSS Transitions
Transitions animate property changes smoothly.
Basic Syntax
.button {
background: #3b82f6;
transition: background 0.3s ease;
}
.button:hover {
background: #2563eb;
}
Transition Properties
.element {
transition-property: all;
transition-duration: 0.3s;
transition-timing-function: ease-in-out;
transition-delay: 0s;
/* Shorthand */
transition: all 0.3s ease-in-out 0s;
}
Timing Functions
transition: all 0.3s linear;
transition: all 0.3s ease;
transition: all 0.3s ease-in;
transition: all 0.3s ease-out;
transition: all 0.3s ease-in-out;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
CSS Keyframe Animations
Basic Animation
@keyframes fadeIn {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
.element {
animation: fadeIn 0.5s ease forwards;
}
Multi-Step Animation
@keyframes bounce {
0%, 100% {
transform: translateY(0);
}
50% {
transform: translateY(-20px);
}
}
.bouncing {
animation: bounce 1s ease infinite;
}
Animation Properties
.element {
animation-name: fadeIn;
animation-duration: 1s;
animation-timing-function: ease;
animation-delay: 0s;
animation-iteration-count: 1;
animation-direction: normal;
animation-fill-mode: forwards;
animation-play-state: running;
/* Shorthand */
animation: fadeIn 1s ease 0s 1 normal forwards running;
}
Common Animation Examples
Pulse Effect
@keyframes pulse {
0%, 100% {
transform: scale(1);
}
50% {
transform: scale(1.05);
}
}
.pulse {
animation: pulse 2s ease infinite;
}
Slide In
@keyframes slideIn {
from {
transform: translateX(-100%);
opacity: 0;
}
to {
transform: translateX(0);
opacity: 1;
}
}
.slide-in {
animation: slideIn 0.5s ease forwards;
}
Spinner
@keyframes spin {
to {
transform: rotate(360deg);
}
}
.spinner {
width: 40px;
height: 40px;
border: 3px solid #f3f3f3;
border-top: 3px solid #3b82f6;
border-radius: 50%;
animation: spin 1s linear infinite;
}
Performance Tips
- Animate only
transformandopacityfor smooth performance - Use
will-changesparingly for complex animations - Prefer CSS animations over JavaScript when possible
- Use
prefers-reduced-motionmedia query
@media (prefers-reduced-motion: reduce) {
* {
animation-duration: 0.01ms !important;
transition-duration: 0.01ms !important;
}
}
Best Practices
- Keep animations subtle and purposeful
- Use appropriate timing (0.2-0.5s for most UI)
- Test on different devices
- Consider accessibility
Related: CSS Transforms Guide
Related Tools
Gradient Generator
Create beautiful CSS gradients. Linear, radial, and conic with multiple color stops.
Box Shadow Generator
Create CSS box shadows with multiple layers. Adjust offset, blur, spread, and color.
Animation Generator
Create CSS keyframe animations with visual timeline editor.
Transform Generator
Create CSS transforms with rotate, scale, skew, and translate properties.
Continue Learning
CSS Fundamentals: Styling Web Pages
Master CSS basics including selectors, properties, and the box model.
intermediateCSS Transforms: Rotate, Scale, and More
Learn to manipulate elements with CSS transforms including 2D and 3D effects.
intermediateSVG for Web Developers: A Practical Guide
Learn how to create, optimize, and animate SVG graphics for the web.