深入理解CSS3 animation的steps

时间:2022-06-18 18:49:38

在应用 CSS3 渐变/动画时,有个控制时间的属性 <timing-function> 。它的取值中除了常用到的三次贝塞尔曲线以外,还有个让人比较困惑的 steps() 函数。

steps() 第一个参数 number 为指定的间隔数(必须是正整数),即把动画分为 n 步阶段性展示,第二个参数默认为 end,设置最后一步的状态,start 为结束时的状态,end 为开始时的状态。

那么有了这个steps(),我们就可以实现web中常见的Sprite 精灵动画了,见demo:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>spirit动画</title>
<link rel="stylesheet" href="">
<style>
.bird{background: url(http://www.china-pub.com/static/alltype_zt/060710flash_1/market_1_9.jpg);width: 140px;height:85px;animation: bird 0.8s steps(4) infinite; }
@keyframes bird{
from {
background-position: 0 0;
}
to {
background-position: -400% 0px;
}
}
</style>
</head>
<body>
<div class="bird"></div>
</body>
</html>

其原理是:使用一张含有多帧静态画面的图片,通过切换 background-position 使其变为连续的动画。上面例子中steps(4),表示让整个动画在4个关键帧之间切换。这个飞翔的鸟的图片中包含了4帧,所以这里设置了4;