1.1 KiB
1.1 KiB
Animation — Frontend
Priority
One orchestrated page load > scattered micro-interactions.
High-Impact Moments
- Staggered hero reveals — content fades in sequence
- Scroll-triggered sections — elements enter on scroll
- Hover state surprises — scale, shadow, color shift
- Page transitions — smooth route changes
Framer Motion Example
const container = {
hidden: { opacity: 0 },
show: {
opacity: 1,
transition: { staggerChildren: 0.1 }
}
}
const item = {
hidden: { opacity: 0, y: 20 },
show: { opacity: 1, y: 0 }
}
<motion.div variants={container} initial="hidden" animate="show">
{items.map(i => <motion.div key={i} variants={item} />)}
</motion.div>
Timing Guidelines
| Type | Duration |
|---|---|
| Interactions (hover, click) | 150-300ms |
| Transitions (page, modal) | 300-500ms |
| Complex sequences | 500-800ms total |
Accessibility
Always respect prefers-reduced-motion:
@media (prefers-reduced-motion: reduce) {
* { animation-duration: 0.01ms !important; }
}