利用 CSS animation 和 CSS sprite 制做动画

CSS3 大大强化了制做动画的能力,可是若是要作出图案比较复杂的动画,选择 GIF 依然是一个不错的选择。今天给你们介绍一个使用 CSS animation 配合雪碧图(CSS sprite)来制做动画的方法,能够作出相似于 GIF 动画的效果。css

CSS3 Animation steps函数

首先看看,CSS3 animation的兼容性。能够看到基本上主流浏览器都支持了 animation 属性,chrome、safari、opera和移动端的浏览器带上前缀就能够支持。git

利用雪碧图来制做动画使用了 CSS3 Animation 里面的一个重要的函数 stepsgithub

animation 自己是一个复合的属性,它包含了 animation-nameanimation-timing-functionanimation-iteration-countanimation-directionanimation-play-stateanimation-fill-mode 六个属性。web

steps 就是属于 animation-timing-function 中的一个函数。chrome

animation-timing-function 平时咱们用的比较多的是默认的一些动画曲线值 easeease-in 等等。而 steps 则能够由咱们控制动画被分红多少个部分进行。浏览器

steps(n,[start|end]) 传入一到两个参数,第一个参数意思是把动画分红 n 等分,而后动画就会平均地运行。第二个参数 start 表示从动画的开头开始运行,相反,end 就表示从动画的结尾开始运行,默认值为 end。函数

所以,咱们利用雪碧图和 steps 函数制做动画的原理就是,雪碧图包含了动画图片的每一帧,而后利用 steps 函数肯定固定时间内动画运行的部分等于动画的帧数,从而实现动画效果。工具

动画实例

用猥琐的兔斯基作例子╮( ̄▽ ̄")╭动画

图片描述

首先咱们要切图,把动画的每一帧切成这样的图:spa

图片描述

切图若是你们不想折腾,推荐在线合并雪碧图的工具

而后写 keyframes

@-webkit-keyframes tuski {
    0% {
        background-position:0;
    }
    100% {
        background-position: -576px 0;
    }
}
@-moz-keyframes tuski {
    0% {
        background-position:0;
    }
    100% {
        background-position: -576px 0;
    }
}
@keyframes tuski {
    0% {
        background-position:0;
    }
    100% {
        background-position: -576px 0;
    }
}

调用动画

#tuski {
    -webkit-animation: tuski .5s steps(12) infinite;
    -moz-animation: tuski .5s steps(12) infinite;
    animation: tuski .5s steps(12) infinite;
}

与 GIF 相比,这种动画能够让咱们手动调整动画运行的速度。

这里看完整的代码。

大功告成。

感谢您的阅读,有不足之处请为我指出。

本文同步于个人我的博客 http://blog.acwong.org/2015/03/23/make-animation-with-steps-and-css-sprite/

相关文章
相关标签/搜索