CSS3 animation-timing-function 属性

从开始到结束以相同的速度播放动画:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <style>
    div {
      width: 100px;
      height: 100px;
      background: red;
      position: relative;
      animation: mymove 5s infinite;
      animation-timing-function: linear;

      /* Safari and Chrome */
      -webkit-animation: mymove 5s infinite;
      -webkit-animation-timing-function: linear;
    }

    @keyframes mymove {
      from {
        left: 0px;
      }
      to {
        left: 200px;
      }
    }

    @-webkit-keyframes mymove
    /* Safari and Chrome */

    {
      from {
        left: 0px;
      }
      to {
        left: 200px;
      }
    }
  </style>
</head>
<body>

  <p><strong>注意:</strong> animation-timing-function 属性不兼容 Internet Explorer 9 以及更早版本的浏览器.</p>

  <div></div>

</body>
</html>

尝试一下 »


浏览器支持

属性
animation-timing-function 43.0
4.0 -webkit-
10.0 16.0
5.0 -moz-
9.0
4.0 -webkit-
30.0
15.0 -webkit-
12.0 -o-

标签定义及使用说明

animation-timing-function指定动画将如何完成一个周期。

速度曲线定义动画从一套 CSS 样式变为另一套所用的时间。

速度曲线用于使变化更为平滑。

默认值: ease
继承: no
版本: CSS3
JavaScript 语法: object object.style.animationTimingFunction="linear"

语法

animation - timing - function: value;

animation-timing-function使用的数学函数,称为三次贝塞尔曲线,速度曲线。使用此函数,您可以使用您自己的值,或使用预先定义的值之一:

描述 测试
linear 动画从头到尾的速度是相同的。 测试
ease 默认。动画以低速开始,然后加快,在结束前变慢。 测试
ease-in 动画以低速开始。 测试
ease-out 动画以低速结束。 测试
ease-in-out 动画以低速开始和结束。 测试
cubic-bezier(n,n,n,n) 在 cubic-bezier 函数中自己的值。可能的值是从 0 到 1 的数值。

提示: 请试着在下面的"尝试一下"功能中使用不同的值。


在线实例


为了更好地理解不同的定时函数值,这里提供了设置五个不同值的五个不同的 div 元素:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <style>
    div {
      width: 100px;
      height: 50px;
      background: red;
      color: white;
      font-weight: bold;
      position: relative;
      animation: mymove 5s infinite;
      -webkit-animation: mymove 5s infinite;
      /* Safari and Chrome */
    }

    #div1 {
      animation-timing-function: linear;
    }

    #div2 {
      animation-timing-function: ease;
    }

    #div3 {
      animation-timing-function: ease-in;
    }

    #div4 {
      animation-timing-function: ease-out;
    }

    #div5 {
      animation-timing-function: ease-in-out;
    }
    /* Safari and Chrome: */

    #div1 {
      -webkit-animation-timing-function: linear;
    }

    #div2 {
      -webkit-animation-timing-function: ease;
    }

    #div3 {
      -webkit-animation-timing-function: ease-in;
    }

    #div4 {
      -webkit-animation-timing-function: ease-out;
    }

    #div5 {
      -webkit-animation-timing-function: ease-in-out;
    }

    @keyframes mymove {
      from {
        left: 0px;
      }
      to {
        left: 300px;
      }
    }

    @-webkit-keyframes mymove
    /* Safari and Chrome */

    {
      from {
        left: 0px;
      }
      to {
        left: 300px;
      }
    }
  </style>
</head>
<body>

  <p><strong>注意:</strong> animation-timing-funtion属性不兼容 Internet Explorer 9以及更早版本的浏览器</p>

  <div id="div1">linear</div>
  <div id="div2">ease</div>
  <div id="div3">ease-in</div>
  <div id="div4">ease-out</div>
  <div id="div5">ease-in-out</div>

</body>
</html>

尝试一下 »


与上例相同,但是通过 cubic-bezier 函数来定义速度曲线:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <style>
    div {
      width: 100px;
      height: 50px;
      background: red;
      color: white;
      font-weight: bold;
      position: relative;
      animation: mymove 5s infinite;
      -webkit-animation: mymove 5s infinite;
      /* Safari and Chrome */
    }

    #div1 {
      animation-timing-function: cubic-bezier(0, 0, 0.25, 1);
    }

    #div2 {
      animation-timing-function: cubic-bezier(0.25, 0.1, 0.25, 1);
    }

    #div3 {
      animation-timing-function: cubic-bezier(0.42, 0, 1, 1);
    }

    #div4 {
      animation-timing-function: cubic-bezier(0, 0, 0.58, 1);
    }

    #div5 {
      animation-timing-function: cubic-bezier(0.42, 0, 0.58, 1);
    }
    /* Safari and Chrome: */

    #div1 {
      -webkit-animation-timing-function: cubic-bezier(0, 0, 0.25, 1);
    }

    #div2 {
      -webkit-animation-timing-function: cubic-bezier(0.25, 0.1, 0.25, 1);
    }

    #div3 {
      -webkit-animation-timing-function: cubic-bezier(0.42, 0, 1, 1);
    }

    #div4 {
      -webkit-animation-timing-function: cubic-bezier(0, 0, 0.58, 1);
    }

    #div5 {
      -webkit-animation-timing-function: cubic-bezier(0.42, 0, 0.58, 1);
    }

    @keyframes mymove {
      from {
        left: 0px;
      }
      to {
        left: 300px;
      }
    }

    @-webkit-keyframes mymove
    /* Safari and Chrome */

    {
      from {
        left: 0px;
      }
      to {
        left: 300px;
      }
    }
  </style>
</head>
<body>

  <p><strong>注意:</strong> animation-timing-function 属性不兼容 Internet Explorer 9 以及更早版本的浏览器.</p>

  <div id="div1">linear</div>
  <div id="div2">ease</div>
  <div id="div3">ease-in</div>
  <div id="div4">ease-out</div>
  <div id="div5">ease-in-out</div>

</body>
</html>

尝试一下 »


相关文章

CSS3 教程: CSS3 动画