Foundations

Motion

Short, purposeful motion that shows what changed. Every animation has a reduced-motion version.

Duration

TokenValue
--duration-instant0ms
--duration-fast120ms
--duration-base200ms
--duration-slow320ms

Easing

TokenCurveUse
--ease-standardcubic-bezier(0.2, 0, 0, 1)Moving between states
--ease-entrancecubic-bezier(0, 0, 0.2, 1)Things arriving
--ease-exitcubic-bezier(0.4, 0, 1, 1)Things leaving

Reduced motion

Gate every non-essential animation on prefers-reduced-motion, and name in the design what each animation becomes when it is off. On iOS, Flint.Motion.animation(_:duration:reduceMotion:) returns no animation when Reduce Motion is on.

CSS
.drawer {
  transition: transform var(--duration-base) var(--ease-entrance);
}
@media (prefers-reduced-motion: reduce) {
  .drawer { transition: none; }
}