css3中用animation的steps属性制作帧动画


Posted in HTML / CSS onApril 25, 2019

昨天火急火燎地接到一个任务,说是要做一个掷骰子的游戏,关于掷骰子期间的过渡动画,我本来是想用css 3d制作一个立体的骰子,然后叫UI给6张平面图贴上去。再用translate3d来操作。然而UI考虑得十分周到,直接就给了我一个雪碧图,并告诉我在photoshop中可以用帧动画来播放几张图片,达到类似gif的效果,程序上实现也大抵如此吧。

卧槽真是个神奇的UI boy。

  于是我顺着他的思路,用上了animation在timing-function中的steps属性。

先来看看UI给的图吧,是这样的:(注:图片宽度1200px)

css3中用animation的steps属性制作帧动画

如果要播放这张图片的话,很明显是分为五个帧,然后定义一个动画,background-position从(0,0)到(-图片的宽度,0)。首先要明白background-position的数值指的是背景图的左上角顶点到容器左上角顶点的x,y距离。x,y正数值越大,背景图越向右下角偏移。

所以动画的代码如下:

css3中用animation的steps属性制作帧动画

我们先来播放一下看看效果,设置animation:spinning 2s linear infinite,效果如下:

css3中用animation的steps属性制作帧动画

可以看到是从左到右依次播放:2,3,4,5,6,2,3,4,5,6....。类似跑马灯的效果,既然说到这里就顺便提一下alternate,众所周知infinite linear定义的是0 -> 100 ->0 -> 100 -> 0 -> 100......(始终正向)。而infinite alternate定义的是0 -> 100 -> 100 ->0 -> 0 -> 100......(一下正向一下反向)。修改animation:spinning 2s alternate infinite,效果如下:

css3中用animation的steps属性制作帧动画

但是这都不是我们需要的效果,因为帧动画的关键在于“瞬变”。在animation的timing-function中,有一个steps(n)属性。表示将动画分为n帧。比如说,这里我们定义animation:spinning 2s steps(5) infinite。它在这个例子中表示的效果如下:

css3中用animation的steps属性制作帧动画

在0~400ms时,position:0 0;400ms~800ms,position:-240px 0。800ms~1200ms,position:-480px 0,以此类推。需要注意的是,比如400ms时position为0 0,在401ms时position就突变成-240px 0,即是说position是瞬变的。这个位置变化没有过渡效果,这就是steps的特点:阶跃性。

此时效果如下:

css3中用animation的steps属性制作帧动画

400ms一帧当然太慢了,我们把时间适当压缩一下。比如总动画时长为300ms,那就是60ms一帧,分5帧播放完,这样看起来就会流畅不少。最终效果如下:

 css3中用animation的steps属性制作帧动画

总结

以上所述是小编给大家介绍的css3中用animation的steps属性制作帧动画 ,希望对大家有所帮助!

HTML / CSS 相关文章推荐
CSS3中Color的一些特性介绍
May 27 HTML / CSS
纯CSS3制作的简洁蓝白风格的登录模板(非IE效果更好)
Aug 11 HTML / CSS
CSS+jQuery+PHP+MySQL实现的在线答题功能
Apr 25 HTML / CSS
CSS3,线性渐变(linear-gradient)的使用总结
Jan 09 HTML / CSS
CSS3 清除浮动的方法示例
Jun 01 HTML / CSS
用CSS3和table标签实现一个圆形轨迹的动画的示例代码
Jan 17 HTML / CSS
详解css position 5种不同的值的用法
Jul 30 HTML / CSS
CSS3关于z-index不生效问题的解决
Feb 19 HTML / CSS
纯CSS3实现移动端展开和收起效果的示例代码
Apr 26 HTML / CSS
Html5移动端获奖无缝滚动动画实现示例
Jun 25 HTML / CSS
利用html5的websocket实现websocket聊天室
Dec 12 HTML / CSS
webView加载html图片遇到的问题解决
Oct 08 HTML / CSS
css3 中实现炫酷的loading效果
Apr 26 #HTML / CSS
使用 css3 transform 属性来变换背景图的方法
May 07 #HTML / CSS
详解CSS3 弹性布局快速入门
Jun 06 #HTML / CSS
通过css3动画和opacity透明度实现呼吸灯效果
Aug 09 #HTML / CSS
CSS3 translate导致字体模糊的实例代码
Aug 30 #HTML / CSS
CSS3实现类似翻书效果的过渡动画的示例代码
Sep 06 #HTML / CSS
CSS3动画之利用requestAnimationFrame触发重新播放功能
Sep 11 #HTML / CSS
You might like
全国FM电台频率大全 - 2 天津市
2020/03/11 无线电
如何在PHP中使用Oracle数据库(2)
2006/10/09 PHP
回答PHPCHINA上的几个问题:URL映射
2007/02/14 PHP
php在window iis的莫名问题的测试方法
2013/05/14 PHP
PHP实现懒加载的方法
2015/03/07 PHP
Apache无法自动跳转却显示目录的解决方法
2020/11/30 PHP
JavaScript Event学习第十一章 按键的检测
2010/02/10 Javascript
jQuery页面加载初始化常用的三种方法
2014/06/04 Javascript
javascript遇到html5的一些表单属性
2015/07/05 Javascript
在Vue中使用echarts的实例代码(3种图)
2017/07/10 Javascript
基于BootStrap multiselect.js实现的下拉框联动效果
2017/07/28 Javascript
javascript中的event loop事件循环详解
2018/12/14 Javascript
JS document form表单元素操作完整示例
2020/01/13 Javascript
详解vue-flickity的fullScreen功能实现
2020/04/07 Javascript
JS如何在不同平台实现多语言方式
2020/07/16 Javascript
vue点击按钮实现简单页面的切换
2020/09/08 Javascript
python2.7实现邮件发送功能
2018/12/12 Python
使用python实现mqtt的发布和订阅
2019/05/05 Python
Pyqt5 实现跳转界面并关闭当前界面的方法
2019/06/19 Python
使用python采集Excel表中某一格数据
2020/05/14 Python
HTML5 canvas画矩形时出现边框样式不一致的解决方法
2013/10/14 HTML / CSS
戴尔英国官网:Dell英国
2017/05/27 全球购物
英国优质家居用品网上品牌:URBANARA
2018/06/01 全球购物
CheapTickets香港机票预订网站:CheapTickets.hk
2019/06/26 全球购物
医学院护理专业应届生求职信
2013/11/12 职场文书
营业员实习自我鉴定
2013/12/07 职场文书
淘宝好评语大全
2014/05/05 职场文书
低碳日宣传活动总结
2014/07/09 职场文书
学生夜不归宿检讨书
2014/09/23 职场文书
研究生简历自我评
2015/03/11 职场文书
农村环境卫生倡议书
2015/04/29 职场文书
2019年最新借条范本!
2019/07/08 职场文书
nginx实现发布静态资源的方法
2021/03/31 Servers
python opencv通过4坐标剪裁图片
2021/06/05 Python
CSS实现九宫格布局(自适应)的示例代码
2022/02/12 HTML / CSS
利用正则表达式匹配浮点型数据
2022/05/30 Java/Android