Motion system brings interfaces to life through purposeful, informative animations that guide users and create a more engaging experience.
Motion should serve a purpose, whether it's guiding attention, showing relationships, or providing feedback.
Animations should feel natural and follow the laws of physics, with appropriate easing, momentum, and weight.
Motion should enhance the experience without calling attention to itself or becoming distracting.
Similar actions should have similar animations, creating a predictable and cohesive experience.
Most transitions
Elements entering the screen
Elements exiting the screen
Attention-grabbing animations
Use for appearing/disappearing elements, modals, tooltips
Use for emphasis, buttons, interactive elements
Use for navigation, transitions between screens
Always respect the user's motion preferences by checking for the prefers-reduced-motion media query and providing alternative animations or static transitions.
@media (prefers-reduced-motion: reduce) { * { animation-duration: 0.01ms !important; transition-duration: 0.01ms !important; } }
Don't rely solely on animation to convey information. Always provide alternative cues such as color changes, text labels, or icons.
Use CSS transitions for simple state changes:
.button { background-color: var(--primary); transition: background-color 200ms var(--ease-standard); } .button:hover { background-color: var(--primary-dark); }
Use CSS animations for repeating or complex animations:
@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } .element { animation: fadeIn 300ms var(--ease-enter) forwards; }