Skip to content
Search topics

Animations that ignore the reduced-motion setting

Animations started by scrolling, opening a drawer, modal or accordion, or any other action never check the reduced-motion setting, and nothing else on the page turns them off.

Broken
Reduce motion is on. It slides anyway.
The accessibility problem illustrated.
01

The problem

People with vestibular disorders get dizzy or sick when every scroll sends blocks of content sliding up the screen, and they have no way to stop it.

02

Try it

Turn Reduce motion on, then scroll the page below.

The switch stands in for the system setting. With it on, does anything still slide in as you scroll?

Broken Can you fix this?

About us

Scroll down to read our story.

How we started

Two friends, one small shop and a lot of seedlings.

What we grow

Houseplants raised in peat-free soil, close to home.

How we deliver

Plastic-free packaging, by bike within the city.

Who we work with

Local nurseries and a community garden.

Visit us

Open Thursday to Sunday, 10:00 to 18:00.

A recreated demo. The broken version is intentionally inaccessible.

03

The fix

Under reduced motion, show the content in place, from the system setting or a switch on the page.

  1. 1Every animation started by scrolling or interaction checks the reduced-motion setting, in CSS and in scripts.
  2. 2Reduce motion by removing the movement, not the content.
  3. 3A switch on the page, if you add one, starts from the system setting.
Before Sections that slide in, with no way to turn it off
.reveal {  opacity: 0;  transform: translateY(80px);  transition: opacity 800ms ease, transform 800ms ease;}.reveal.in-view {  opacity: 1;  transform: none;}
After

Honour the reduced-motion setting

/* Visible and still by default. */.reveal {  opacity: 1;}/* Movement only for people who haven't asked for less. */@media (prefers-reduced-motion: no-preference) {  .reveal:not(.in-view) {    opacity: 0;    transform: translateY(80px);  }  .reveal {    transition: opacity 800ms ease, transform 800ms ease;  }}

Why this fix: Make motion opt-in

04

Verify the fix

4 checks.

Test with: Reduced motion, Keyboard, Mouse

0 of 4 checked

Record the OS, browser and assistive-technology versions, the build, the date, and the actual result of each step. Repeat after adding a new animation or updating an animation library.

Limits

This is a starting pattern, not a guarantee for every application. 2.3.3 is a Level AAA criterion, so many conformance targets do not require it, but the reduced-motion setting is a direct request from the visitor and is cheap to honour. Which movements make someone unwell varies from person to person; testing with people who use the setting tells you more than any rule.

This is a recreated teaching example, not a finding about a named client. The code is a starting pattern: test it in your own product. No completed assistive-technology test is claimed here.

Keep this fixed as your code changes.

Turn guides like this into rules your coding agents and CI follow, then have the result retested with a keyboard and screen readers.

How retests work