css3 animation 中的贝塞尔曲线(cubic-bezier)

html-css08

css3 animation 中的贝塞尔曲线(cubic-bezier),第1张

表面上看,需要设置两个点,实际上包含了两个掩藏点 起始点 (0,0) 和 终点 (1,1) 。所以实际上应该是以下效果。

可以看出,贝塞尔曲线是由4个点构成的一条线,可能是任意形状的线。下面给出一些线型例子来说明。

这种运动模式下 x1 ∈ [0, 0.5], 且 y1 >x1 且 x2 ∈ [0.5, 1] 且 y2 <x2 。此时的运动轨迹习惯上称之为 ease ,下面给出一个夸张点的图像:

这种模式下,x1 ∈ [0, 1] 且 y1 <x1 且 x2 ∈ [0, 1] 且 y2 <x2 。 此时的运动轨迹成为 ease-in ,下面是示意图:

这种模式是与 3 的情况相反,所以 x ∈ [0, 1] 且 y >x 时,这里两个点都要符合这种情况才能实现。习惯上称这种情况为 ease-out ,下面给出示意图:

以上的四种情况中,常见的 ease-in-out 与 ease 的曲线一致,只是 ease-in-out 慢的部分更慢,快的部分更快。

可以用过 这个网站 观察贝赛尔曲线的运动轨迹。

另外,本文参考自

熟悉Photoshop的同学就应该知道什么叫“贝塞尔曲线”(即cubic-bizier),这是计算机中绘制精确平滑曲线的方法,具体你可以去查百度百科,这里一两句话解析不清。而CSS中的cubic-bizier则是一种特殊的贝塞尔曲线,即它的两个端点的坐标是固定的,起点为(0,0),终点为(1,1),有变化的是它们的控制点的坐标,而四个n的前两个n是起点的控制点坐标,后两个n是终点的控制点坐标,它们的取值范围都在0和1之间(包含0和1)。

这里的贝塞尔曲线其实是一种时间曲线,横坐标是动画走过的时间轴,纵坐标是动画移动的距离,通过改变曲线的形状,就可以控制动画移动过程中的速度快慢变化,从而实现各种不同的效果。

其实实际css应用中很少用到cubic-bizier函数来计算曲线,只需直接利用预设值即linear、ease、ease-in、ease-out、ease-in-out就是达到目的了。