本文目录导读:

设计稿中的过渡动画,选择缓动函数(Easing Function)的核心原则是:让动画符合物理直觉,提升用户感知的流畅度与自然度。
没有“万能”的缓动函数,但有一套经验法则,你可以根据动效的属性和意图来选择:
第一步:快速记忆“黄金三法则”
如果你记不住复杂的曲线,先记住这三条,能解决 80% 的界面过渡问题:
-
进入(元素出现):用
ease-out(先快后慢)- 为什么? 模拟物体从静止到运动的惯性,用户希望快速看到新内容,然后自然地减速停稳。
- 示例:弹窗出现、卡片浮入、 sidebar 滑入。
-
退出(元素消失):用
ease-in(先慢后快)- 为什么? 模拟物体离开视线的加速感,用户已经注意到了,让它快速离开,不拖沓。
- 示例:弹窗关闭、删除卡片、提示消失。
-
移动/状态变换(A点到B点):用
ease-in-out(两头慢,中间快)- 为什么? 模拟流畅的物理运动(如电梯起停),避免突兀的启动和停止。
- 示例:开关滑块、列表拖拽、页面切换(如左滑右滑)。
第二步:根据动效意图精细选择
| 动效意图 | 推荐缓动函数 | 效果说明 | 设计稿场景示例 |
|---|---|---|---|
| 物体进入 (进来) | ease-out / cubic-bezier(0, 0, 0.58, 1) |
快速开始,优雅结束,清新、不突兀。 | ① 通知栏从顶部滑入 ② 图片懒加载显示 ③ modal 从屏幕底部向上弹出 |
| 物体退出 (离开) | ease-in / cubic-bezier(0.42, 0, 1, 1) |
缓慢开始,加速消失,果断、不迟疑。 | ① Toast 通知消失 ② 删除一个列表项 ③ 关闭弹窗时内容缩小并淡出 |
| 状态切换 (平移/旋转) | ease-in-out / cubic-bezier(0.42, 0, 0.58, 1) |
温柔启动,中间顺畅,温柔停止,最“通用”。 | ① 汉堡菜单展开/收起 ② Toggle 开关滑动 ③ 卡片展开详情 |
| 强调/反馈 (点击/悬停) | ease-out / cubic-bezier(0.25, 0.1, 0.25, 1) |
快速响应,稍微反弹,模拟物理弹性。 | ① 按钮点击下沉 ② 图标 hover 放大 ③ 点赞爱心爆炸 |
| 大层级切换 (页面转场) | ease-in-out 或 自定义 cubic-bezier |
需要更明显的叙事感。ease-in-out 平滑过渡。 |
① 页面从左向右滑动 ② Tab 切换 ③ Banner 自动轮播 |
| 弹性/个性 | cubic-bezier(0.68, -0.55, 0.27, 1.55) (弹性) |
超过终点再回弹,增加趣味性,但不要滥用。 | ① 加载完成时的对勾图标 ② 收藏按钮的星星 ③ 游戏化进度条 |
第三步:掌握“魔幻曲线” cubic-bezier
在Figma、Sketch、Web代码中,最精确的控制是通过 cubic-bezier(p1x, p1y, p2x, p2y) 自定义曲线。
-
避开几个常见误区:
- 滥用
ease-in进入: 会让元素显得像被人推了一把,缓慢启动很“笨重”。 - 滥用
ease-out退出: 会让元素消失很拖沓,用户等待烦躁。 - 全程
linear(线性): 看起来像机器,没有生机感,除了特定效果(如进度条加载、颜色渐变),尽量避免。
- 滥用
-
设计师的“偷懒”工具:
- Google “easing function cheat sheet”: 有很多可视化图表,可以直接抄预设值。
- 使用 Figma 的 Smart Animate + 交互原型: 在Figma中直接设置缓动函数并预览,这是最直观的方法。
- 工具网站:
cubic-bezier.com或easings.net。
-
如何向开发交接?
- 直接输出预设值: “进入用 ease-out, 时长300ms”。
- 输出 CSS 参数: “
transition: all 0.3s cubic-bezier(0.25, 0.1, 0.25, 1)”。 - 使用 Lottie 或 Rive: 如果是复杂路径动画(如弹性、跟随),导出动画文件,效果最保真。
第四步:一个简单的决策流程图
请从这一步开始:
1. 这个动画是【进入】还是【退出】?
├── 进入 → 走到 2
└── 退出 → 走到 3
2. 进入:
├── 是【主要元素】出现? → 用 ease-out (先快后慢)
└── 是【装饰/次要】出现? → 用 ease-out (或者稍微慢一点的 ease-out)
3. 退出:
├── 用户希望它【马上消失】? → 用 ease-in (先慢后快) 或甚至 linear
└── 是【温和的淡化】? → 用 ease-in-out
4. 【状态变化】(移动/缩放/颜色变化):
├── 是【平滑的过渡】? → 用 ease-in-out
├── 是【点击反馈】? → 用 ease-out 或 微弹性 (如 cubic-bezier(0.34, 1.56, 0.64, 1))
└── 是【拖拽/跟随手指】? → 用 阻尼效果 (如 Spring 物理引擎,或自定义 ease-out)
5. 特殊用途:
├── 【渐隐/渐显透明度】? → 用 ease-in-out 或 linear (取决于速度)
├── 【旋转】? → 用 ease-in-out
└── 【路径动画】(沿着曲线移动)? → 用 ease-in-out 或 自定义跟随曲线
给设计师的直接建议
- 新人/快速原型: 所有动画一律用
ease-in-out(时长 200-300ms),确保不翻车。 - 追求自然感: 进入用
ease-out,退出用ease-in。 - 需要个性/高级感: 打开
cubic-bezier.com,自己拉曲线(P1 在 0.1-0.3 之间,P2 在 0.7-0.9 之间,尝试带一点弹性)。 - 测试至关重要: 在真实设备上(而非设计稿预览)看动画效果,设计稿的 300ms 在手机上可能过快或过慢。
- 统一性: 整个产品里尽量使用同一套缓动函数库(Ant Design 或 Material Design 的动画 token),保持品牌体验一致。
标签: 过渡动画
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播