CSS
css/reduced-motion
Non-essential motion (entrance animations, parallax, smooth scrolling) respects prefers-reduced-motion.
moderatestaticfe-motion
Why
Large movement on screen (sliding, zooming, parallax, smooth scrolling) can cause dizziness, nausea and headaches for people with vestibular disorders, and distracts people with attention difficulties. They set "reduce motion" in their system; a page that ignores the setting moves anyway.
Fix
Put non-essential motion inside @media (prefers-reduced-motion: no-preference), or replace it under (prefers-reduced-motion: reduce) with a short fade or nothing. With Tailwind use motion-safe: and motion-reduce:; with an animation library use its reduced-motion option (for example Motion's MotionConfig reducedMotion="user"). Prefer toning motion down to a blanket animation: none !important, which can leave scripts waiting for animationend.
Examples
/* bad */
.hero__title { animation: slide-in 0.8s both; }
/* good */
@media (prefers-reduced-motion: no-preference) {
.hero__title { animation: slide-in 0.8s both; }
}Sources
Facts
- Id
css/reduced-motion- Severity
- moderate
- Check
- static checked in the source by
audit - Applies to
project- Taught by the skill
fe-motionMotion and animation- Since version
- 0.1.0
Read it in the terminal
npx github:dawidolko/frontend-skills explain css/reduced-motion