Skip to content

Motion

Transitions, how far things move, and how long states last.

Movement

6 tokens
  • transition.movement.disclosure

    --semantic-transition-movement-disclosure

    Use when content expands or collapses, for chevrons that turn with it, and for menu panels that slide in and out.

    Duration
    300ms
    Easing
    cubic-bezier(0.65, 0, 0.35, 1)
    Reduced motion
    0ms
  • transition.movement.drawer

    --semantic-transition-movement-drawer

    Component token for a drawer opening and closing, and snapping back after a swipe. Fade its backdrop with transition.fade.

    Duration
    450ms
    Easing
    cubic-bezier(0.25, 1, 0.5, 1)
    Reduced motion
    0ms
  • transition.movement.indicator

    --semantic-transition-movement-indicator

    Use when a selection indicator answering a click moves to a new position or size, such as a tab indicator or a switch thumb.

    Duration
    200ms
    Easing
    cubic-bezier(0.33, 1, 0.68, 1)
    Reduced motion
    0ms
  • transition.movement.navigationMenu

    --semantic-transition-movement-navigation-menu

    Component token for the navigation menu popup moving and resizing between triggers, and for its entry scale.

    Duration
    300ms
    Easing
    cubic-bezier(0.22, 1, 0.36, 1)
    Reduced motion
    0ms
  • transition.movement.popup

    --semantic-transition-movement-popup

    Use for the scale or slide of popups as they open and close, such as dropdowns, menus, popovers, tooltips, and modals. Fade their opacity with transition.fade.

    Duration
    150ms
    Easing
    cubic-bezier(0.33, 1, 0.68, 1)
    Reduced motion
    0ms
  • transition.movement.tableOfContents.indicator

    --semantic-transition-movement-table-of-contents-indicator

    Component token for the table of contents indicator following the reading position. Overshoots slightly before it settles.

    Duration
    600ms
    Easing
    cubic-bezier(0.2, 1.37, 0.4, 1)
    Reduced motion
    0ms

Fades & state changes

4 tokens
  • transition.fade

    --semantic-transition-fade

    Use for opacity when something appears or disappears, such as popups, scrollbars, backdrops, and page crossfades.

    Duration
    150ms
    Easing
    cubic-bezier(0, 0, 0.58, 1)
  • transition.feedback

    --semantic-transition-feedback

    Use for color, background, border, and shadow changes, such as hover, press, and the switch track.

    Duration
    150ms
    Easing
    cubic-bezier(0, 0, 0.58, 1)
  • transition.pulse

    --semantic-transition-pulse

    Use for one half of a repeating opacity pulse that shows content is loading, such as a skeleton, between opacity.visible and opacity.pulse. Do not use for elements appearing or disappearing; use fade.

    Duration
    1000ms
    Easing
    cubic-bezier(0.65, 0, 0.35, 1)
  • transition.stale

    --semantic-transition-stale

    Use to dim content to opacity.stale; the delay keeps fast updates from flickering. Apply it only in the stale state, so content restores instantly.

    Duration
    200ms
    Delay
    200ms
    Easing
    cubic-bezier(0, 0, 0.58, 1)

Travel

3 tokens
  • dimension.travel.rest

    --semantic-dimension-travel-rest

    Use for content at its resting position.

    Value
    0rem dimension.0
  • dimension.travel.keyboardKey

    --semantic-dimension-travel-keyboard-key

    Use for the distance a keyboard key moves down while pressed, as deep as its bottom edge is thicker than its other borders.

    Value
    0.0625rem · 1px dimension.25
  • dimension.travel.popup

    --semantic-dimension-travel-popup

    Use for the distance popups slide as they open and close.

    Value
    0.25rem · 4px dimension.100

State durations

1 token
  • duration.confirmation

    --semantic-duration-confirmation

    Use for how long a confirmation stays, such as a copy button's check after copying, before the control returns to its resting state.

    Value
    2000ms duration.2000