深入理解CSS3 animation的steps
在应用 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;