资讯专栏INFORMATION COLUMN

利用 CSS animation 和 CSS sprite 制作动画

陈伟 / 2636人阅读

摘要:今天给大家介绍一个使用配合雪碧图来制作动画的方法,可以做出类似于动画的效果。利用雪碧图来制作动画使用了里面的一个重要的函数。

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

CSS3 Animation steps函数

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

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

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

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

animation-timing-function 平时我们用的比较多的是默认的一些动画曲线值 easeease-in 等等。而 steps 则可以由我们控制动画被分成多少个部分进行。

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

因此,我们利用雪碧图和 steps 函数制作动画的原理就是,雪碧图包含了动画图片的每一帧,然后利用 steps 函数确定固定时间内动画运行的部分等于动画的帧数,从而实现动画效果。

动画实例

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

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

切图如果大家不想折腾,推荐在线合并雪碧图的工具。

然后写 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/

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/111043.html

相关文章

  • CSS3帧动画

    摘要:在制作帧动画的时候,一般采用雪碧图的方式,通过切换图片的位置,使其连续播放,从而形成动画。使用改造之后的代码,利用伪类进行背景填充,然后控制该元素移动来实现逐帧动画。 在制作帧动画的时候,一般采用雪碧图的方式,通过切换图片的位置,使其连续播放,从而形成动画。 雪碧图 雪碧图的制作可以使用compass制作,还可以使用一些小工具进行制作,提供一个在线制作雪碧图的网站。CSS Sprite...

    Nino 评论0 收藏0
  • 进入 CSS3 动画

    摘要:我最近有机会深入研究一些动画。下一步是添加动画效果并确定它们何时发生。创建关键帧后,您可以将动画称为属性。点击动画使用上面的关键帧和动画语法,这里是我用来在本页顶部的中制作动画的代码。 我最近有机会深入研究一些CSS3动画。 我使用了像animate.css这样的库,用javascript完成了动画,但从未做过任何自定义的CSS3工作 原文 任务 我们最近在SeatGeek更新了我们的...

    lindroid 评论0 收藏0
  • 记一次游戏H5开发经验

    摘要:为了实现物体随机出现的效果,让每个物体随机多少秒后开始出现最后一个物体出现完,多少秒后出现结束画面等等,需要理清楚各个定时器的关系,并对其添加语义化良好的标记,及时对未完结的定时器进行清除,防止定时器带来的意想不到的问题。 快到年终的时候做了一个以游戏形式展示的h5活动页,第一次尝试使用js写小游戏,很有趣的过程,很宝贵的经验。 效果图 直接上个效果的gif图,游戏的一小部分效果,录出...

    xingpingz 评论0 收藏0
  • 记一次游戏H5开发经验

    摘要:为了实现物体随机出现的效果,让每个物体随机多少秒后开始出现最后一个物体出现完,多少秒后出现结束画面等等,需要理清楚各个定时器的关系,并对其添加语义化良好的标记,及时对未完结的定时器进行清除,防止定时器带来的意想不到的问题。 快到年终的时候做了一个以游戏形式展示的h5活动页,第一次尝试使用js写小游戏,很有趣的过程,很宝贵的经验。 效果图 直接上个效果的gif图,游戏的一小部分效果,录出...

    GitChat 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<