Cubic-bezier 曲线

cubic-bezier又称三次贝塞尔,主要是为animation生成速度曲线函数。

  cubic-bezier(x1,y1,x2,y2) 

此图中:

 P0:(0,0) P1:(x1,y1) P2:(x2,y2) P3:(1,1)

(x1,x2 范围为 0-1) (y1,y2没规定,但是过大没必要也没意义。) 

我对此曲线是这么理解的:假设P1,P2两个点为吸铁石,曲线是薄铁条(可以被吸铁石影响形状的那种)

那么这个曲线则是被 P1,P2两个吸铁石点拉扯形成的。

有一点需要注意,当这个点距离曲线越远,则拉扯力越大,曲线弧度越大。距离曲线越近,拉扯力越小,曲线弧度越小(这里和吸铁石相反。)

 1 <!DOCTYPE html>
 2 <html lang="zh-cn">
 3 <head>
 4   <meta charset="UTF-8">
 5   <title>Document</title>
 6 
 7   <style>
 8     .animation {
 9       width: 50px;
10       height: 50px;
11       background-color: #ed3;
12       -webkit-transition:  all 2s cubic-bezier(.17, .86, .73, .14);
13            -o-transition:  all 2s cubic-bezier(.17, .86, .73, .14);
14               transition:  all 2s cubic-bezier(.17, .86, .73, .14);
15     }
16     .animation:hover {
17       -webkit-transform:  translateX(400px);
18           -ms-transform:  translateX(400px);
19            -o-transform:  translateX(400px);
20               transform:  translateX(400px);
21     }
22   </style>
23 </head>
24 <body>
25   <div class="animation"></div>
26 </body>
27 </html>

这段代码中 (x1=0.17 y1=0.86) (x2=0.73 y2=0.14) 可以画出此运动曲线为

图片看不懂没关系,我教你,简单来讲可以把(0,0)当做物体的初始点,(0,1)当做物体的终点 注意这里不是(1,1),X轴从0到1为这个物体从初始点到终点的时间。

中间有段曲线大约在1/2路程的时候,发现随着时间的推移增加的很缓慢。那就说明这个物体在这段时间移动的慢。

好了,继续。下边有几个常用的曲线

 ease: cubic-bezier(.25, .1, .25, 1);

 

 liner:cubic-bezier(0, 0, 1, 1) / cubic-bezier(1, 1, 0, 0) 

 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) 

 In Out . Back(来回的缓冲效果):cubic-bezier(0.68, -0.55, 0.27, 1.55) 

参考:https://www.jianshu.com/p/d999f090d333

one more thing: 这个网址可以在线创作Cubic-bezier,蛮有意思的 

posted @ 2018-04-19 17:51  ming-os9  阅读(493)  评论(0编辑  收藏  举报