三次贝塞尔曲线生成器
拖动曲线上的两个控制点,看真实元素随之运动,从而塑造一段动画的手感。三次贝塞尔函数能把生硬、机械的过渡变成会加速、会停稳、会回弹的自然动效,而把曲线和动作并排放在一起,这层关系就一目了然。可以从 CSS 关键字或某个命名缓动出发,再拖动手柄,直到时间感符合心里的预期。位移、缩放和透明度三个示例会循环播放,方便你比较同一条曲线作用在不同属性上的观感。输出是一份可直接粘贴的过渡或动画缓动函数,全部在浏览器里计算。
- 拖动两个控制点,缓动曲线随实时动效预览一起更新
- 从 CSS 关键字或 easeOutBack 等命名缓动出发,再手动微调
- 位移、缩放和透明度示例并列,让同一条曲线在多种属性上接受检验
- 控制点可超出 0 到 1 区间,做出带回弹的 back 缓动而不只是平滑过渡
- 复制可直接用于过渡或动画的缓动函数,全部在浏览器里计算
transition-timing-function: cubic-bezier(0.25, 0.1, 0.25, 1); /* shorthand */ transition: all 600ms cubic-bezier(0.25, 0.1, 0.25, 1);
功能简介
把缓动曲线和它产生的动作并排呈现,让时间感成为一种能感受、能调整的东西,而不是在样式表里盲调的四个数字。
- 01
直接编辑曲线
拖动两个控制点来调整加速和减速,需要还原设计稿里的曲线时,也可以直接输入精确数值。
- 02
多属性实时动效
位移、缩放和透明度示例循环播放,呈现同一条曲线在驱动移动、尺寸和淡入淡出时的不同观感。
- 03
关键字与命名缓动
从 linear、ease、ease-in-out 或 easeOutCubic、easeInOutBack 等命名缓动起步,在此基础上微调,而不是从零开始。
- 04
回弹与弹簧手感
控制点可以移到 0 到 1 区间之外,因此做出会越过终点再回稳的 back 缓动,和平滑过渡一样简单。
- 05
线性参照基准
一条淡淡的直线和预览里的线性残影,让你清楚看出自己的曲线相比匀速、没有生气的运动偏离了多少。
- 06
输出干净、可直接复制
结果是标准的 cubic-bezier 缓动函数,外加过渡或动画的简写示例,可直接粘进任何样式表。
如何使用
把对动作手感的模糊感觉变成精确的缓动函数,无论你是在还原设计稿还是凭直觉调。
- 01
从 CSS 关键字或某个接近目标手感的命名缓动里挑一个起点。
- 02
拖动起点和终点控制点,调整动作的加速和减速方式。
- 03
想要弹簧效果时,把某个控制点拉到方框上方或下方,让曲线越过终点回弹。
- 04
设定时长,看位移、缩放和透明度示例,直到时间感合适。
- 05
选择过渡或动画,再把缓动函数复制进样式表。
功能说明
动效是界面的一部分,而不是叠在上面的装饰,所以缓动编辑器要干净地对应真实的 cubic-bezier 语法,并如实展示结果。
- 两个可拖动的控制点直接对应 cubic-bezier 函数的四个数字
- 数值输入框接受精确值,便于还原设计工具或规范里的曲线
- 控制点可越过 0 到 1 区间,做出 back 和弹簧类缓动
- 预设分组涵盖 CSS 关键字,以及从 sine 到 back 的整套命名缓动
- 每个预设都带一个小曲线缩略图,套用前就能认出它的形状
- 位移、缩放和透明度示例一起循环,便于跨属性比较曲线
- 线性残影和对角参照线显示曲线相比匀速偏离了多少
- 可调的时长揭示同一条曲线在快慢不同时长下的手感
- 输出同时包含 timing-function 声明和过渡或动画的简写
- 一切都在浏览器本地运行,未发布工作的动效设计始终保持私密
适合哪些场景
缓动是让动作看起来经过设计、而非默认值的关键。合适的曲线取决于动的是什么、为什么动,而对着真实元素试,是最快的判断方式。
-
按钮与悬停过渡
一段短促的 ease-out 让按钮和链接在悬停、按下时显得灵敏利落,不会拖沓或机械。
-
弹窗与浮层
进入时带一点回弹往往更好看,退出则保持快速、线性,于是面板进来时有生气、离开时干脆。
-
菜单与折叠面板
展开和收起用 ease-in-out 曲线更合适,让高度变化柔和地起步和收尾,而不是突然弹跳。
-
轻提示与通知
稍微越过终点的 back 缓动能把目光引向进入的提示,再让它稳稳落位,不显得突兀。
-
页面与路由切换
较大位移上用平滑的 ease-in-out 曲线,让视图之间的导航显得连贯而非生硬。
-
加载与进度
循环指示器和进度条需要精心挑选缓动,让重复的动作显得平稳而非机械。
-
还原设计规范
把设计工具里的精确控制点数值粘进来,就能在 CSS 里准确复现一条动效曲线,便于交付。
-
搭建动效体系
定下一小组可复用的缓动曲线,让整个产品的动画共享同一种一致的时间感。
延伸阅读
动效叠在布局之上,所以先用 Flexbox 与 Grid 布局生成器 把结构定下来;当一段过渡同时改变层次时,再把缓动和来自 阴影生成器 的深度配在一起,让运动和阴影一起变化,而不是互相打架。
使用建议
缓动很容易用过头,养成几个习惯能让动效显得有意为之、前后一致,而不是杂乱或扰人。
- 进入或响应输入的元素用 ease-out,先快后慢显得灵敏自然。
- 离开屏幕的元素用 ease-in,先慢后快读起来像是在加速远离。
- 回弹和弹簧曲线留给值得被注意的时刻,而不是页面上每一次过渡。
- 小的界面变化保持短时长,大致 150 到 300 毫秒,让界面用起来依然轻快。
- 让曲线匹配移动的距离,因为同一条缓动在小位移和大位移上手感不同。
- 统一到少数几条命名曲线,而不是给每个组件都写一条独特的 cubic-bezier。
- 尊重减少动态的偏好设置,为有此需求的用户减弱或移除较大的位移。
- 在真实时长和尺寸下测试曲线,因为示例里合适的时间感放进实际场景可能偏慢。
边界与注意事项
这个工具聚焦于 CSS 的 cubic-bezier 时间函数,因此有几个相关的动效领域刻意不在范围内。
- 它产出的是 cubic-bezier 曲线,用 steps() 的分段时间语法不同,这里不生成。
- CSS 的 cubic-bezier 要求两个 x 值都落在 0 到 1 之间,所以水平方向的手柄被限制在该区间。
- 它输出的是缓动函数,而非完整关键帧,被动画的属性和取值由你自己的 CSS 定义。
- 预览使用固定的示例元素,请在真实组件的实际尺寸和位移下确认手感。
- 动画库的弹簧物理可以用回弹近似,但和一条 cubic-bezier 曲线并不完全相同。
- 观感上的流畅还取决于帧率和当时还有什么在重绘,这一点本编辑器不做测量。
常见问题
在塑造缓动曲线、把动效想法转成可上线的 CSS 时,最常出现的一些问题。
什么是三次贝塞尔缓动曲线?
它是一个用两个控制点把时间映射到进度的函数。弯折这条曲线,就能控制动画如何加速、减速或越过终点,而不是匀速移动。
生成的 CSS 能直接用于生产吗?
可以。输出是标准的 cubic-bezier 缓动函数,能直接粘进任何样式表的过渡或动画声明,无需改动。
什么时候用 ease-in,什么时候用 ease-out?
进入或响应输入的元素用 ease-out,它们减速落位;离开的元素用 ease-in,它们加速离开;既在屏幕上开始又在屏幕上结束的移动适合 ease-in-out。
怎样做出弹跳或弹簧效果?
把某个控制点拖到编辑框上方或下方,让曲线越过终点值,就能得到弹簧类缓动里那种越过再回稳的动作,比如 easeOutBack。
为什么 X 值受限而 Y 值不受限?
CSS 只允许代表时间的 cubic-bezier X 值落在 0 到 1 之间;代表进度的 Y 值可以超出该范围,以制造回弹。
它也会生成关键帧吗?
不会。它生成的是缓动函数。被动画的内容,比如 transform 或 opacity,由你在自己的过渡或关键帧规则里定义,再把曲线应用上去。
能还原我设计工具里的精确曲线吗?
可以。把四个控制点数值直接输入数值框,就能复现设计文件或规范里某一条特定的 cubic-bezier 曲线。
编辑时会上传任何内容吗?
不会。曲线编辑、预览和 CSS 生成都在浏览器本地完成,因此用于未发布的产品界面和保密的动效设计都很安全。
更多相关工具
时间感是精致界面的一层。缓动定下来之后,再回到布局和深度,让结构、层次和动效都成为同一套用心设计的一部分。