贝塞尔曲线编辑器

可视化调整 cubic-bezier 缓动函数,拖拽控制点实时预览动画效果

贝塞尔曲线编辑

拖拽 P1、P2 控制点调整曲线,预览动画效果

曲线编辑器
P0 P3 P1 P2

拖拽蓝色圆点 P1、P2 调整曲线形状

cubic-bezier 值
cubic-bezier(0.33, 0.67, 0.67, 0.33)
预设缓动方案
动画预览
终点
时长:1.5s 位置:从左到右
CSS 代码
transition-timing-function: cubic-bezier(0.33, 0.67, 0.67, 0.33);
广告位

使用说明

  1. 用鼠标拖拽 SVG 画布中的蓝色圆点 P1、P2 调整贝塞尔曲线形状
  2. P0(左下)与 P3(右上)为固定起点终点,分别代表动画时间 0%/100%
  3. 右侧实时显示 cubic-bezier(x1, y1, x2, y2) 数值
  4. 点击预设按钮可快速套用 linear / ease / ease-in / ease-out / ease-in-out / bounce 等常用缓动
  5. 点击"重播"按钮预览方块按当前缓动函数做位移动画
  6. 点击"复制"按钮将 transition-timing-function CSS 代码复制到剪贴板

适用场景

  • 动画调优:精确控制过渡动画的速度曲线
  • UI 微交互:按钮点击、菜单展开、卡片悬停
  • 页面转场:路由切换、模态框出现与消失
  • 数据可视化:图表动画、进度条、数字滚动
  • 游戏交互:弹跳、回弹等物理感动画

安全保障

  • 本地计算:所有计算在浏览器本地完成
  • 纯 CSS 输出:生成的代码无任何 JS 依赖
  • 无网络请求:调整过程不发起任何外部请求
  • 免费使用:无需注册登录,打开即用

常见问题

四个参数分别代表什么?

cubic-bezier(x1, y1, x2, y2) 定义一个三次贝塞尔曲线:x1/x2 是两个控制点的横坐标(必须在 0-1 之间,对应时间进度),y1/y2 是纵坐标(对应动画进度,可超出 0-1 实现回弹)。P0 固定为 (0,0) 起点,P3 固定为 (1,1) 终点。

为什么 y 值可以超出 0-1?

x1、x2 必须在 0-1 范围内(时间不能倒流),但 y1、y2 可以小于 0 或大于 1,这表示动画在某个时刻"超过"了最终值或"未到"起始值,从而实现 bounce 回弹、弹簧等效果。比如 bounce 预设就使用了 y 值超出 1 的曲线。

与 transition-timing-function 的关系?

cubic-bezier 是 transition-timing-function 与 animation-timing-function 的可选值之一。CSS 内置的 ease / linear / ease-in 等关键字实际上都是预设的 cubic-bezier:linear = cubic-bezier(0,0,1,1);ease = cubic-bezier(0.25,0.1,0.25,1)。

SVG 坐标与 CSS 坐标如何对应?

SVG 坐标原点在左上角,y 轴向下为正;CSS 动画进度 y 轴向上为正。本工具已自动转换:SVG 中 y 值越大对应 CSS y 值越小。控制点在 SVG 中的位置直接反映动画曲线的形状。