ZH
我的工具

CSS 三次贝塞尔曲线生成器

为 CSS 过渡和动画生成 cubic-bezier() 缓动曲线,提供 ease、easeOutBack 等 30 个预设、曲线图、动态预览和进度表。

配合“自定义”预设使用。x 值必须在 0 到 1 之间,y 值可以超出。
我的工具 →
广告

缓动函数决定动画如何加速和减速。在 CSS(以及 Web Animations API 和许多游戏引擎)中,它写作 cubic-bezier(x1, y1, x2, y2):一条从 (0, 0) 到 (1, 1) 的曲线,由两个控制柄塑造运动方式。这个生成器提供 CSS 关键字、easings.net 上流行的曲线(easeOutCubic、easeInOutQuart、easeOutBack……)或您自己的控制柄,绘制曲线,用它让小球运动,并列出持续时间每 10% 处的进度。

使用方法

  1. 选择一个预设,或选择“自定义”并输入 x1、y1、x2、y2。
  2. 设置持续时间和要做动画的属性。
  3. 观察预览中的小球,并查看进度表。
  4. 复制 transition、animation 或 JavaScript 代码。

计算公式

x(u) = 3(1−u)²u·x1 + 3(1−u)u²·x2 + u³ · y(u) = 3(1−u)²u·y1 + 3(1−u)u²·y2 + u³

对于时间比例 t,生成器求解 x(u) = t 得到曲线参数 u(牛顿–拉弗森法,必要时退回二分法),再把 y(u) 作为进度。x1 和 x2 必须在 0 到 1 之间;y 值超出 0–1 就会产生过冲。

示例

关键字 ease 就是 cubic-bezier(0.25, 0.1, 0.25, 1):持续时间过半时,元素已经走完了 80.24% 的距离,所以 ease 给人先快后缓的感觉。ease-in(0.42, 0, 1, 1)此时只完成了 31.54%。easeOutBack 会过冲:在时间过半时已到 108.74%,随后再回落。

常见问题

界面动效应该用哪种缓动?

进入屏幕的元素通常用 ease-out(开头快、结尾缓),离开的元素用 ease-in,在屏幕上移动的元素用 ease-in-out。界面过渡要短,大约 150–300 ms。

为什么 x 不能小于 0 或大于 1?

x 代表时间。x 倒退的曲线会让同一时刻对应两个进度值,所以 CSS 不接受这样的值。y 是进度,为了做出回弹之类的效果,可以超出范围。

能做出弹跳或弹性缓动吗?

单个 cubic-bezier 做不到——它可以过冲一次,但不能来回振荡。可以使用多个关键帧,或者在支持的浏览器里使用带很多点的 CSS linear() 函数。

资料来源

最后更新:

引用此工具
APA

kakaoCalc. (2026, November 8). CSS 三次贝塞尔曲线生成器. https://kakao.mobile/zh/tools/easing-function-generator/

MLA

“CSS 三次贝塞尔曲线生成器.” kakaoCalc, 8 Nov. 2026, kakao.mobile/zh/tools/easing-function-generator/.

广告