Complete the lesson quiz and earn 250 XP.
In the physical world, no object transitions instantly from 0 to 100 mph—momentum and friction dictate continuous acceleration and deceleration. Interfaces that employ linear transitions feel robotic and unnatural:
cubic-bezier(0.4, 0, 1, 1)): Starts slowly and accelerates. Best for elements exiting the screen (as if dropping off a table).cubic-bezier(0, 0, 0.2, 1)): Starts fast and decelerates gracefully to rest. Best for elements entering the viewport, letting users inspect them without waiting.cubic-bezier(0.4, 0, 0.2, 1)): Smooth acceleration and deceleration. Best for elements traveling between two on-screen positions.Every millisecond of motion must serve an explicit cognitive or operational purpose:
Excessive, slow, or looping animations that block user progress, distract from content, or cause cognitive fatigue.
When a user taps an item in a list and the screen flashes white before loading the detail page, cognitive continuity is shattered. The user's brain must re-orient itself to the new layout.
In modern design systems and the browser's View Transitions API:
By maintaining visual persistence of the focal element, shared element transitions preserve the user's mental model and eliminate jarring context switches.
Timing calibration separates world-class software from amateur interfaces:
Motion in software is a critical accessibility issue. Millions of individuals suffer from vestibular disorders, inner-ear damage, or motion sensitivity:
Large-scale parallax scrolling, 3D viewport spinning, and aggressive zooming can induce real physical vertigo, nausea, migraines, and disorientation.
Operating systems allow users to declare a reduced motion preference. Professional interfaces must honor this via CSS:
@media (prefers-reduced-motion: reduce) {
*, *::before, *::after {
animation-duration: 0.01ms !important;
transition-duration: 0.01ms !important;
}
}
Replace large spatial translations with subtle opacity fades when reduced motion is requested.
When an application loads a grid of 12 cards simultaneously: