Animation from Interactions
Motion animation triggered by interaction can be disabled, unless the animation is essential to the functionality or information.
Who this affects
Users with vestibular disorders, for whom parallax scrolling, zoom transitions, and sliding page changes cause dizziness, nausea, and migraine.
The failure and the fix
Each example below is a self-contained page, loaded in a frame so its markup cannot affect this page. Open either one on its own to test it with a keyboard or screen reader.
Fails 2.3.3
Open the failing example in a new tab
fail.html — the problem
<h1>Spring festival</h1>
<!-- FAILURE 1: a large hero that scales and rotates on hover.
FAILURE 2: panels that slide and scale on hover.
FAILURE 3: smooth scrolling on every in-page jump, which sends the whole
viewport sliding hundreds of pixels.
Who this affects: people with vestibular disorders. Large movement in the
peripheral field creates a mismatch between what the eyes report and what
the inner ear reports, and the result is dizziness, nausea and migraine
that can last for hours. It is a physical response, not a preference. -->
<div class="hero">Three days of events</div>
<p><a href="#end">Jump to the programme</a></p>
<div class="panel"><h2>Friday</h2><p>Opening night readings.</p></div>
<div class="panel"><h2>Saturday</h2><p>Workshops and signings.</p></div>
<div class="spacer"></div>
<h2 id="end">Programme</h2>
<p>The full programme.</p>
Meets 2.3.3
Open the passing example in a new tab
pass.html — the fix
<h1>Spring festival</h1>
<div class="hero">Three days of events</div>
<p><a href="#end">Jump to the programme</a></p>
<div class="panel"><h2>Friday</h2><p>Opening night readings.</p></div>
<div class="panel"><h2>Saturday</h2><p>Workshops and signings.</p></div>
<div class="spacer"></div>
<h2 id="end">Programme</h2>
<p>The full programme.</p>
<!-- Where to find the setting, so you can actually test this:
macOS System Settings > Accessibility > Display > Reduce motion
Windows Settings > Accessibility > Visual effects > Animation effects
iOS Settings > Accessibility > Motion > Reduce Motion
Android Settings > Accessibility > Remove animations
Firefox about:config > ui.prefersReducedMotion = 1
What counts as motion animation for 2.3.3: parallax scrolling, large
scaling and rotation, elements flying in, page transitions that slide the
whole viewport, and smooth scrolling over long distances.
What does not: a fade, a colour change, or a small movement that does not
imply motion through space. Fades are the safe substitute.
The exception is narrow - animation ESSENTIAL to the functionality, such
as a progress indicator or an animation that is itself the content. -->
How to test it
Set the operating system to reduce motion and confirm the site honours prefers-reduced-motion by removing or replacing large movement, not merely shortening it.
-
Automated
The presence of a prefers-reduced-motion media query can be detected in CSS; whether it covers every animation cannot.
No axe rule maps to this criterion. It has to be checked by a person.
-
Keyboard
Unplug the mouse. Move through the page with Tab, Shift+Tab, Enter, Space and the arrow keys. See the keyboard testing script.
-
Screen reader
Listen to both examples with NVDA, JAWS, VoiceOver or TalkBack and compare what is announced. See the screen reader cheat sheets.
-
Visual
Zoom to 200% and 400%, narrow the viewport to 320 px, and apply the text-spacing overrides. See the visual testing procedures.
Related criteria
In the specification
- Understanding 2.3.3 Animation from Interactions — the W3C explanation, intent and exceptions
- 2.3.3 in the WCAG 2.2 Recommendation — the normative wording
WCAG 2.2 Demo Suite