跳到主要内容
界面图谱Interface Atlas
☰
EN
无障碍Accessibility / Motion

减弱动效

Reduced Motion

别名:减弱动效减弱动态效果减少动画动效降级关掉动画reduced motion

这是什么

尊重系统「减弱动态效果」偏好,把大幅位移、缩放、视差动画降级为淡入甚至直接呈现。前庭敏感的用户会被大幅动效诱发眩晕恶心,这不是审美偏好而是健康风险;WCAG 2.3.3 要求非必要动画可被关闭。

名词辨析

prefers-reduced-motion 是操作系统里的健康偏好,不是应用内的「关闭动画」开关——前者由用户在系统设置里声明,后者只是产品自己的设置项。

交互实验室

试一试,再决定怎么用

正在加载实验室…

✓ 适用场景

  • 落地页、转场、视差等大幅位移或缩放动画
  • 自动播放的装饰动效(跑马灯、弹性弹跳、数字滚动)
  • 用 JS 驱动的动画库补上 CSS 之外的降级分支

✕ 不适用场景

  • 把按下态、加载态这些功能反馈也一刀切砍光
  • 用减弱动效代替真正的无障碍修复(比如补焦点环)
  • 只降级 CSS 动画,JS 弹跳/视差仍强制播放

常见形式

仅淡入

Fade only

去掉位移与缩放,只留 opacity 过渡,最常用降级

完全取消

No animation

animation: none / transition: none,状态瞬间到位

静态替代

Static replace

用静态图或即时结果替换整段动效叙事

实现要点

@media (prefers-reduced-motion: reduce)animation: nonematchMediatransition-duration

CSS 侧统一门控:@media (prefers-reduced-motion: reduce) { *, ::before, ::after { animation-duration: .01ms !important; transition-duration: .01ms !important; } },再按需为状态反馈保留 opacity 通道。JS 动画用 matchMedia("(prefers-reduced-motion: reduce)").matches 读取并在 change 事件时重配;滚动驱动与视差必须同步禁用。

平台 API

prefers-reduced-motionmatchMediaanimation: none

代码里叫什么

同一控件在不同体系里的叫号——用对名字,Prompt 和检索才准。

相关概念

滚动显现Scroll Reveal

元素滚动进入视口时才播放淡入、上浮或滑入动画,之前保持隐藏或占位。 把"一次性呈现全部内容"变成"随阅读节奏逐段揭示",让长页面的信息 更有秩序感。通常由 IntersectionObserver 触发,只播一次。

动效搭配使用
悬浮上浮Hover Lift

鼠标悬停时卡片或按钮轻轻上浮(translateY -2~6px)并加深投影, 像被无形的手托起。最常见的"这个可以点"的桌面端暗示, 成本极低但立刻让页面有层次和呼吸感。

动效搭配使用
焦点环Focus Ring

用可见轮廓标记当前键盘焦点位置,让用户知道下一个按键会落在哪里。鼠标点击往往不需要它,但键盘与辅助技术用户必须始终看见焦点在哪,否则只能盲操作。通常用 :focus-visible 控制——键盘聚焦才显示,鼠标点击不打扰。

无障碍搭配使用

容易混淆

页面切换过渡Page Transition

page-transition 是转场动效本身,reduced-motion 是决定它要不要减弱的系统策略——一个造动效,一个裁动效。

参考来源

Markdown 版(给 Agent) · JSON