视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
使用CSS做贝塞尔曲线
2020-11-27 18:50:06 责编:小采
文档

前言

在了解 cubic-bezier 之前,你需要对 CSS3 中的动画效果有所认识,它是 animation-timing-functiontransition-timing-function 中一个重要的内容。

本体

简介

cubic-bezier 又称三次贝塞尔,主要是为 animation 生成速度曲线的函数,规定是cubic-bezier(<x1>, <y1>, <x2>, <y2>)

我们可以从下图中简要理解一下 cubic-bezier

从上图我们需要知道的是 cubic-bezier 的取值范围:

  • P0:默认值 (0, 0)

  • P1:动态取值 (x1, y1)

  • P2:动态取值 (x2, y2)

  • P3:默认值 (1, 1)

  • 我们需要关注的是 P1 和 P2 两点的取值,而其中 X 轴的取值范围是 0 到1,当取值超出范围时 cubic-bezier 将失效;Y 轴的取值没有规定,当然也毋须过大。

    最直接的理解是,将以一条直线放在范围只有 1 的坐标轴中,并从中间拿出两个点来拉扯(X 轴的取值区间是 [0, 1],Y 轴任意),最后形成的曲线就是动画的速度曲线。

    使用

    在测试例子中:

    <!DOCTYPE html>
    <html lang="zh-cn">
    <head>
     <meta charset="UTF-8">
     <title>Document</title>
    
     <style>
     .animation {
     width: 50px;
     height: 50px;
     background-color: #ed3;
     -webkit-transition: all 2s;
     -o-transition: all 2s;
     transition: all 2s;
     }
     .animation:hover {
     -webkit-transform: translateX(100px);
     -ms-transform: translateX(100px);
     -o-transform: translateX(100px);
     transform: translateX(100px);
     }
     </style>
    </head>
    <body>
     <p class="animation"></p>
    </body>
    </html>

    我们可以在浏览器中看到,当鼠标移到元素上时,元素开始向右移动,开始比较慢,之后则比较快,移开时按原曲线回到原点。

    在例子中,当我们不为 transition 添加 cubic-bezier 或是其他 timing-function 时,默认的速度曲线是ease,此时的速度曲线是:

    那么让我们在代码中加入 cubic-bezier(.17, .86, .73, .14)

    ....animation {
     ... -webkit-transition: 
     all 2s cubic-bezier(.17, .86, .73, .14); 
     -o-transition: all 2s cubic-bezier(.17, .86, .73, .14); 
     transition: all 2s cubic-bezier(.17, .86, .73, .14);
    }
    ...

    再刷新页面观察效果,会看到动画在执行过程中有一段很缓慢的移动,前后的速度相似,此时的运动曲线是:

    几个常用的固定值对应的 cubic-bezier 值以及速度曲线

    1. 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)

    下载本文
    显示全文
    专题