Skip to content

Loader animations should all respect prefers-reduced-motion #3

Description

@anishfyi

What

The Techniques page ships ~17 loader animations, but the @media (prefers-reduced-motion: reduce) block in docs/assets/techniques.css (around line 196) only quiets a subset — the logo loaders, .s-dots, .s-bar, and the skeletons. The spinner and the .s-load-* family (dual, dash, arc, orbit, bars, pulse, ripple, grid, wave, flip, bounce, typing) keep spinning for users who have asked their OS to reduce motion.

Continuous spinners are exactly the kind of motion that setting should stop, so this is a real accessibility gap.

Why it's a good first issue

Pure CSS, one file, and there's already a block to extend — you're following an established pattern, not inventing one.

What to build

  • Extend the @media (prefers-reduced-motion: reduce) block in docs/assets/techniques.css so every animated loader is covered.
  • For each, either stop the animation (animation: none) leaving a static, still-legible shape, or slow it to a gentle, non-spinning state — whichever reads better for that loader.
  • Double-check nothing that should stay visible collapses to nothing (a spinner with animation: none should still show its ring, not disappear).

How to find them all

grep -oE "animation:[^;]*" docs/assets/techniques.css

lists every animated declaration; make sure each animated class has a reduced-motion counterpart.

Where

  • docs/assets/techniques.css (the existing block is near line 196)

Done when

With "Reduce motion" enabled in the OS, none of the loaders spin or pulse, they remain visible and legible, and npm run verify:docs still passes.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions