{{ cubicBezierStr }}
用在CSS的transition或者animation动画中的时间函数timing-function,描述在过渡或动画中一维数值的速度改变,通常称为缓动函数。
三次/立方贝塞尔曲线(cubic Bézier curves)是CSS时间函数常用的一种。语法为:
横轴为时间比例(time ratio),纵轴为完成状态(output ratio)
曲线由四个点来定义,P0、P1、P2和P3
P0(0, 0)和P3(1, 1)是固定在坐标系上的起点和终点
语法中x1, y1, x2, y2表示两个过渡点P1和P2的横纵坐标
x1和x2是时间值,必须在[0, 1]范围内
y1和y2可以是负数或者大于1,从而实现弹跳动画效果
y值超过实际允许范围(比如颜色值大于255或小于0)会被修改为允许范围内的最接近值
常用的命名过渡效果,等同于某些数值的cubic-bezier。
名称 | 过渡效果 | 等同于 |
---|---|---|
linear | 以相同速度开始至结束 | cubic-bezier(0, 0, 1, 1) |
ease | 慢速开始,然后变快,然后慢速结束 | cubic-bezier(.25, .1, .25, 1) |
ease-in | 慢速开始 | cubic-bezier(.42, 0, 1, 1) |
ease-out | 慢速结束 | cubic-bezier(0, 0, .58, 1) |
ease-in-out | 慢速开始和结束 | cubic-bezier(.42, 0, .58, 1) |
本页面用Vue实现响应式SVG来简单模拟cubic-bezier三次贝塞尔时间函数。
SVG画布和cubic-bezier过渡点的坐标系不同需要分别定义。
坐标转换,将时间值约束在[0, 1]范围内。
实现过渡点的拖动与计算,兼容桌面和移动设备mousemove/touchmove。