transition-timing-function支持ease、linear、ease-in、ease-out四个预设值,分别对应不同贝塞尔曲线;还可通过cubic-bezier()自定义,x值必须在[0,1]内,y值超出可能触发回弹但兼容性受限。
transition-timing-function 支持哪些预设值
transition-timing-function 不是控制“快慢”的数值,而是定义速度变化的曲线形状。它影响的是过渡过程中的加速度分布,而非总时长(总时长由 transition-duration 决定)。
常见预设值有四个:ease(默认,先慢后快再慢)、linear(匀速)、ease-in(慢入)、ease-out(慢出)。它们对应不同贝塞尔曲线,浏览器内建实现,无需手写参数。
-
ease适合大多数 UI 交互,视觉自然,但容易被误认为“不够快”——其实只是起始和结束有缓冲 -
linear在拖拽、进度条等需要可预测节奏的场景更合适,但用在按钮上会显得生硬 -
ease-in适合入场动画(如下拉菜单展开),ease-out更适合收起动作(如 tooltip 消失)
如何用 cubic-bezier() 自定义过渡节奏
当预设值不够用时,cubic-bezier(x1, y1, x2, y2) 是唯一标准方式。四个参数必须是 0–1 范围内的数字,代表贝塞尔曲线两个控制点的坐标。
例如 cubic-bezier(0.25, 0.46, 0.45, 0.94) 是一个常用缓动:比 ease 入场更轻、收尾更利落,常用于 Material Design 风格动效。