Skip to main content
← 🎨 CSS as a design systemΒ·Module B7 Β· Lesson 2
TaskBuild three boxes with different easings. .box1 with transition-timing-function: ease-out, .box2 with ease-in-out, .box3 with cubic-bezier(0.34, 1.56, 0.64, 1) (spring). Each: 60Γ—60px, background varies, transition 0.4s, padding 16px.

Easing functions: ease-out, cubic-bezier, spring

75 XP6 min
Theory

The 5 keyword easings + the custom one

.linear     { transition-timing-function: linear; }       /* constant speed */
.ease       { transition-timing-function: ease; }         /* default β€” slow start + end */
.ease-in    { transition-timing-function: ease-in; }      /* slow start */
.ease-out   { transition-timing-function: ease-out; }     /* slow end */
.ease-in-out { transition-timing-function: ease-in-out; } /* slow both */
.custom     { transition-timing-function: cubic-bezier(0.34, 1.56, 0.64, 1); } /* overshoot */

Which to use when

  • `ease-out` (default in 2026) β€” slows at the end. Best for INCOMING motion (elements appearing on screen). Feels natural.
  • `ease-in` β€” slows at the start. For OUTGOING (elements leaving the screen).
  • `ease-in-out` β€” slow both ends. For symmetric motion (modals, toggles).
  • `linear` β€” constant speed. For continuous animation (rotating loaders, marquees).
  • `cubic-bezier` β€” anything custom. The classic "overshoot" or "spring" curves.

The "spring" easing

cubic-bezier(0.34, 1.56, 0.64, 1) is the famous "overshoot" curve. The transformed value briefly goes BEYOND the target then settles. Feels playful.

Tools like cubic-bezier.com let you draw the curve and copy the values.

linear() (new 2024)

animation-timing-function: linear(0, 0.5 25%, 1);

Pass a sequence of stops. Replaces cubic-bezier for some uses; lets you do spring-like motion with multiple knees. Browser support shipped late 2023.

πŸ”’

Sign up to start coding

Theory is open to everyone. The interactive editor, live preview, and check are unlocked with a 7-day free trial β€” card required, cancel anytime.

Sign up β€” free trial β†’

First 15 lessons in each track are free. No card needed for those.

← PreviousNext lesson β†’

Get one Python or web tip a day β€” by email

Short, hand-written, no spam. Unsubscribe in one click.