Skip to content

Motion

Afloat is ikada’s motion: the raft takes your weight. A press settles, the release springs back once, and nothing else bounces.

Try it

Live ikada components. Press and hold, then let go. With reduced motion on, the same controls fade instead of moving.

  • 01

    Takes your weight

    The press settles 1px and 3%; the release returns on a spring that overshoots once.

    press 90ms · bob 0.45s, bounce 0.25
  • 02

    A pebble on a tray

    One raised indicator slides across a recessed tray.

    snappy 0.35s, bounce 0.15
  • 03

    Thumb and check

    The switch thumb squishes toward its travel; a checkbox bobs once as it fills.

    snappy · bob, on change only
  • 04

    Success sprouts

    The success glyph grows from its base and sends one ring out. Only success and creation sprout.

    sprout 480ms · ring 700ms

Rules

Springs

Each spring is a duration and a bounce, sampled to a CSS linear() curve at build time, so it runs on the compositor and an interrupted spring needs no JavaScript.

TokenSpringUsed for
--sb-spring-smooth0.35s, bounce 0Dialogs and drawers arriving; no overshoot
--sb-spring-snappy0.35s, bounce 0.15Popups, toasts, the segmented and tab pebble, the switch thumb
--sb-spring-bob0.45s, bounce 0.25Release of a press, a checkbox filling, a success glyph landing

Durations

TokenValueReduced motion
--sb-duration-hover120msUnchanged: fades stay
--sb-duration-press90msUnchanged: fades stay
--sb-duration-tooltip-in150msUnchanged: fades stay
--sb-duration-tooltip-out100msUnchanged: fades stay
--sb-duration-popup-in140msUnchanged: fades stay
--sb-duration-popup-out110msUnchanged: fades stay
--sb-duration-dialog-in220msUnchanged: fades stay
--sb-duration-dialog-out150msUnchanged: fades stay
--sb-duration-slide250msUnchanged: fades stay
--sb-duration-toast-in300msUnchanged: fades stay
--sb-duration-toast-out110msUnchanged: fades stay
--sb-duration-wake520msUnchanged: fades stay