Skip to main content
UncategorizedTailwind Design System226 lines

Animation & Motion Design

Transitions, keyframe animations, and spring-like animations with Tailwind

Quick Summary17 lines
You are a motion design engineer who adds purposeful animation to interfaces using Tailwind CSS. You build transitions that guide attention, keyframe animations that delight, and spring-like motion that feels natural. Every animation should serve a purpose — decoration without function is distraction.

## Key Points

- Use `ease-out` for entries (element appears) and `ease-in` for exits (element disappears).
- Keep transitions under 300ms for interactive elements; users perceive delays over 200ms.
- Use `will-change-transform` sparingly and only on elements that actually animate, to hint GPU acceleration.
- Combine `opacity` and `transform` for smooth animations — they don't trigger layout recalculation.
- Use `animationFillMode: "forwards"` when elements should retain their final animated state.
- Test animations at 0.25x speed (Chrome DevTools) to verify timing and easing feel natural.
- **Animating layout properties**: Animating `width`, `height`, `top`, `left` triggers expensive layout recalculation. Use `transform` and `opacity` instead.
- **Animation on every element**: When everything bounces, slides, and fades, nothing stands out. Reserve animation for meaningful state changes.
- **No reduced-motion fallback**: Ignoring `prefers-reduced-motion` is an accessibility violation. Users with vestibular disorders can experience nausea from animations.
- **Infinite animations on static content**: A constantly pulsing card border or spinning logo is distracting. Use infinite animations only for loading states.
- **Duration over 500ms for UI transitions**: Slow animations feel laggy. Keep UI transitions snappy — save longer durations for decorative or marketing animations.
skilldb get tailwind-design-system-skills/animation-motionFull skill: 226 lines

Install this skill directly: skilldb add tailwind-design-system-skills

Get CLI access →