标准 · WCAG 2.2

SC 2.3.3 级别 AAA WCAG 2.1

交互触发的动画

由交互触发的运动动画必须可由用户禁用,除非该动画是不可或缺的。应遵从 `prefers-reduced-motion` 媒体查询。

要求内容

由用户交互触发的运动动画——视差滚动、页面过渡、悬停缩放、滚动驱动的渐现效果——必须在用户请求减少运动时予以禁用,除非该动画对所传达的功能或信息而言是必不可少的。

标准机制是 CSS 的 prefers-reduced-motion: reduce 媒体查询,该查询映射了 macOS、Windows、iOS 和 Android 均提供的操作系统级”减少动态效果”设置。

如何满足

  • 将任何有意义的运动效果(变换、大幅位移、视差、页面过渡、滚动关联动画)包裹在 @media (prefers-reduced-motion: no-preference) 中。
  • 对于 JavaScript 驱动的动画(GSAP、Framer Motion、Lottie),检查 window.matchMedia('(prefers-reduced-motion: reduce)').matches,并跳过动画或以即时状态切换替代。
  • 允许关键反馈动画(加载旋转图标、拖拽预览)在启用减少运动时以更低幅度继续运行——它们传达的是功能,而非装饰。
  • 在 macOS 系统设置 → 辅助功能 → 显示 → 减少动态效果启用的状态下进行测试,以及 Windows、iOS 和 Android 上的对应设置。

常见失败

  • 营销页面的视差滚动忽略操作系统的减少运动偏好设置。
  • 页面过渡库(Barba.js、旧版配置中的 Astro view transitions)无视用户偏好,对大幅位移进行动画处理。
  • 卡片悬停上浮效果使用较长的 translateY 过渡,令有前庭系统障碍的用户感到不适。
  • 长页面上的滚动触发动画,用户滚动时触发数十个运动效果——在规模较大时尤为令人迷失方向。
  • 引导流程中的 Lottie 动画在未检查用户偏好的情况下播放全屏运动效果。

axe 和 Lighthouse 不能可靠地标记减少运动相关的失败,但新版 Lighthouse 的无障碍审计中包含 prefers-reduced-motion 检查,许多设计系统检查工具现在也强制执行此项规定。

为何重要

前庭系统障碍——梅尼埃病、前庭偏头痛、脑震荡后综合征、持续性姿势-感知性头晕——可因屏幕上的大幅或突发运动而加重。其结果是真实的身体性恶心或眩晕,而非单纯的不适感。遵从 prefers-reduced-motion 是成本最低、影响最广的无障碍改进措施之一,而操作系统级的设置意味着用户已经告知您他们的需求。