animation-timing-function

语法

  • animation-timing-function:<single-animation-timing-function>[,<single-animation-timing-function>]*
  • <single-animation-timing-function> = ease | linear | ease-in | ease-out | ease-in-out | step-start | step-end | steps(<integer>[, [ start | end ] ]?) | cubic-bezier(<number>, <number>, <number>, <number>)
  • 默认值:ease
  • 适用于:所有元素,包含伪对象:after和:before
  • 继承性:无
  • 动画性:否
  • 计算值:指定值
  • 媒体:视觉

取值

  • linear:线性过渡。等同于贝塞尔曲线(0.0, 0.0, 1.0, 1.0)
  • ease:平滑过渡。等同于贝塞尔曲线(0.25, 0.1, 0.25, 1.0)
  • ease-in:由慢到快。等同于贝塞尔曲线(0.42, 0, 1.0, 1.0)
  • ease-out:由快到慢。等同于贝塞尔曲线(0, 0, 0.58, 1.0)
  • ease-in-out:由慢到快再到慢。等同于贝塞尔曲线(0.42, 0, 0.58, 1.0)
  • step-start:等同于 steps(1, start)
  • step-end:等同于 steps(1, end)
  • steps(<integer>[, [ start | end ] ]?):接受两个参数的步进函数。第一个参数必须为正整数,指定函数的步数。第二个参数取值可以是start或end,指定每一步的值发生变化的时间点。第二个参数是可选的,默认值为end。
  • cubic-bezier(<number>, <number>, <number>, <number>):特定的贝塞尔曲线类型,4个数值需在[0, 1]区间内

说明

检索或设置对象动画的过渡类型

  • 如果提供多个属性值,以逗号进行分隔。
  • 对应的脚本特性为animationTimingFunction。

兼容性

Values IE Firefox Chrome Safari Opera iOS Safari Android Browser Android Chrome
Basic Support 6.0-9.0 2.0-4.0 4.0-42.0-webkit- 6.0-8.0-webkit- 15.0-29.0-webkit- 6.0-8.4-webkit- 2.1-3.0-webkit- #1 18.0-42.0-webkit-
10.0+ 5.0-15.0-moz- 43.0+ 9.0+ 30.0+ 9.0+ 4.0-40.0-webkit-
16.0+
  • 在一些场景中会有错误行为
  • 部分浏览器不支持伪元素动画,或者支持得不够好,尽可能不要利用伪元素来做动画

示例


<!DOCTYPE html>
<html lang="zh-cmn-Hans">
<head>
<style>
h1{font-size:16px;}
div{width:60px;height:60px;margin:200px 0 0 50px;padding:10px;border-radius:41px;box-shadow:0 0 10px rgba(204,102,0,.8);background:#F6D66E;background:-moz-linear-gradient(top,#fff,#F6D66E);background:-webkit-linear-gradient(top,#fff,#F6D66E);background:linear-gradient(top,#fff,#F6D66E);
    -moz-animation:animations 4s linear infinite;
    -webkit-animation:animations 4s linear infinite;
    animation:animations 4s linear infinite;
}
@-webkit-keyframes animations{
    0%{-webkit-transform:translate(0,0);}
    12%{-webkit-transform:translate(80px,-25px);}
    25%{-webkit-transform:translate(200px,-50px);}
    38%{-webkit-transform:translate(320px,-25px);}
    50%{-webkit-transform:translate(400px,0);}
    62%{-webkit-transform:translate(320px,25px);}
    75%{-webkit-transform:translate(200px,50px);}
    87%{-webkit-transform:translate(80px,25px);}
    100%{-webkit-transform:translate(0,0);}
}
@-moz-keyframes animations{
    0%{-moz-transform:translate(0,0);}
    12%{-moz-transform:translate(80px,-25px);}
    25%{-moz-transform:translate(200px,-50px);}
    38%{-moz-transform:translate(320px,-25px);}
    50%{-moz-transform:translate(400px,0);}
    62%{-moz-transform:translate(320px,25px);}
    75%{-moz-transform:translate(200px,50px);}
    87%{-moz-transform:translate(80px,25px);}
    100%{-moz-transform:translate(0,0);}
}
@keyframes animations{
    0%{transform:translate(0,0);}
    12%{transform:translate(80px,-25px);}
    25%{transform:translate(200px,-50px);}
    38%{transform:translate(320px,-25px);}
    50%{transform:translate(400px,0);}
    62%{transform:translate(320px,25px);}
    75%{transform:translate(200px,50px);}
    87%{transform:translate(80px,25px);}
    100%{transform:translate(0,0);}
}
</style>
</head>
<body>
<h1>线性运动的太阳(您还可以定义其它的动画过渡类型,如ease-in,ease-out等):</h1>
<div></div>
<p></p>
</body>
</html>