css动画速度曲线由animation-timing-function控制,决定动画的缓动效果;常用预设包括ease、linear、ease-in、ease-out和ease-in-out;可通过cubic-bezier()自定义贝塞尔曲线实现更复杂效果,如回弹或弹跳;使用steps()函数可创建分步动画,适用于精灵图切换;合理选择缓动函数能提升动画自然度与用户体验。

css动画的速度曲线由 animation-timing-function 属性控制,它决定了动画在每个周期中从开始到结束的“速度变化”方式。换句话说,它定义了动画的“缓动”(easing)效果,让动画看起来更自然、流畅,而不是机械地匀速运动。
常用预设缓动函数
你可以使用一些内置的关键字来快速设置常见的速度曲线:
- ease:默认值,开始慢,中间快,结束慢,轻微缓入缓出。
- linear:匀速运动,每一帧速度相同,显得生硬。
- ease-in:开始慢,逐渐加速,适合“淡入”或“进入”类动画。
- ease-out:开始快,结束慢,适合“退出”或“消失”类动画。
- ease-in-out:整体对称,开始和结束都慢,中间快,视觉上最平滑。
自定义贝塞尔曲线 cubic-bezier()
如果预设不够用,可以用 cubic-bezier(x1, y1, x2, y2) 自定义速度曲线。四个参数是贝塞尔曲线的两个控制点坐标,x 值必须在 0–1 范围内,y 可以超出(实现“回弹”等效果)。
- cubic-bezier(0.1, 0.7, 1.0, 0.1):快速启动,缓慢结束,再轻微回拉。
- cubic-bezier(0.68, -0.55, 0.27, 1.55):先回退再冲出,常用于弹跳感动画。
推荐使用在线工具如 Ease Visualizer 或 Matthew Lein’s Ceaser 来可视化并生成想要的曲线。
立即学习“前端免费学习笔记(深入)”;
阶梯函数 step-start 与 step-end
如果你想让动画“分步”播放,像幻灯片或像素动画那样,可以使用 steps() 函数:
- steps(4, start):把动画分成 4 步,第一步立即执行。
- steps(5, end):分成 5 步,最后一步在末尾完成(更常见)。
- 典型用途:精灵图(sprite)动画切换。
基本上就这些。选择合适的 timing function 能极大提升用户体验,关键在于匹配动画的语义——是轻柔出现?迅速弹出?还是干脆利落?合理使用缓动,让界面“动得有道理”。