动效不是炫技,而是引导视线、反馈操作、传达层级的设计语言。本讲覆盖 transition、animation、transform 三大武器,以及"性能友好、克制优雅"的动效设计原则——让网站更有质感、更可信。
用 JS 动画 width/height、页面同时转 N 个动效,GPU 扛不住,体验全面崩盘。
每个元素都在晃,重点信息反而被淹没,用户找不到重点只想关页面。
点击、提交、加载、成功失败没有对应动效反馈,交互"断层",用户不知道操作成没成。
按钮按压、卡片浮现的反馈动效
引导元素、吉祥物的轻盈悬浮
加载指示、齿轮与设置图标
提醒提示、注意告警的吸引注意
同一视觉效果,用对属性性能天差地别。对照下表选择。
| 想动的效果 | 推荐属性 | 避免 | 原因 |
|---|---|---|---|
| 位移 / 滑动 | transform: translate | top / left / margin | transform 走合成层,不触发重排 |
| 缩放 / 弹出 | transform: scale | width / height | 缩放不触发布局计算 |
| 淡入淡出 | opacity | display 切换 | opacity 走合成,display 无过渡 |
| 旋转 | transform: rotate | JS 逐帧修改 | 合成层动画流畅省电 |
| 圆角 / 背景色 | border-radius / color | box-shadow 大范围 | 阴影动画易引发重绘 |
| 滚动跟随 | position: sticky | JS 滚动监听改 top | sticky 原生合成,性能最佳 |
这两者走 GPU 合成,性能最优;避免动画 width/height/top 等触发重排重绘的属性。
微交互 150-300ms,页面转场 300-500ms。太短没感觉,太长拖沓。
用 cubic-bezier 或自定义缓动模拟真实物理,避免生硬的 linear 匀速。
用 prefers-reduced-motion 媒体查询,为晕动症用户关闭或减弱动效。
重点动效一页别超过 1-2 处,否则变成干扰而非引导。
优先做"进入"动效(出现、展开),退出动效从简,避免等待。
按压、悬停、加载、成功失败提示,让每个操作都有明确的"回应"。
长页营销页面配合滚动逐步显现,引导用户按节奏读完整个故事。
浮动气泡、新手引导、消息弹入,用动效把用户注意力带到该去的地方。
数字滚动、图表生长、进度条推进,让数据从静态变成有说服力的叙事。