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中使用RGBa来调节透明度的教程
May 09 HTML / CSS
浅谈css3中的前缀
Jul 20 HTML / CSS
css3实现wifi信号逐渐增强效果实例
Aug 09 HTML / CSS
css3实现元素环绕中心点布局的方法示例
Jan 15 HTML / CSS
CSS3 实现footer 固定在底部(无论页面多高始终在底部)
Oct 15 HTML / CSS
使用HTML5的链接预取功能(link prefetching)给网站提速
Dec 13 HTML / CSS
html5贪吃蛇游戏使用63行代码完美实现
Jun 25 HTML / CSS
解析HTML5的存储功能和web SQL的相关操作方法
Feb 19 HTML / CSS
详解HTML5中rel属性的prefetch预加载功能使用
May 06 HTML / CSS
使用phonegap获取位置信息的实现方法
Mar 31 HTML / CSS
AmazeUI 手机版页面的顶部导航条Header与侧边导航栏offCanvas的示例代码
Aug 19 HTML / CSS
CSS3通过var()和calc()函数实现动画特效
Mar 30 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
如何在symfony中导出为CSV文件中的数据
2011/10/06 PHP
页面乱码问题的根源及其分析
2013/08/09 PHP
php遍历树的常用方法汇总
2015/06/18 PHP
PHP中把错误日志保存在系统日志中(Windows系统)
2015/06/23 PHP
php微信扫码支付 php公众号支付
2019/03/24 PHP
Aster vs Newbee BO5 第一场2.19
2021/03/10 DOTA
jquery radio的取值_radio的选中_radio的重置方法
2016/09/20 Javascript
深入学习js瀑布流布局
2016/10/14 Javascript
基于Bootstrap仿淘宝分页控件实现代码
2016/11/07 Javascript
jQuery点击头像上传并预览图片
2017/02/23 Javascript
JS鼠标3次点击事件实现代码及扩展思路
2017/09/12 Javascript
vue-router+nginx 非根路径配置方法
2018/06/30 Javascript
小程序实现列表删除功能
2018/10/30 Javascript
vue组件从开发到发布的实现步骤
2018/11/11 Javascript
JavaScript实现页面中录音功能的方法
2019/06/04 Javascript
小程序外卖订单界面的示例代码
2019/12/30 Javascript
angular共享依赖的解决方案分享
2020/10/15 Javascript
videocapture库制作python视频高速传输程序
2013/12/23 Python
python 采集中文乱码问题的完美解决方法
2016/09/27 Python
用yum安装MySQLdb模块的步骤方法
2016/12/15 Python
Python中正则表达式详解
2017/05/17 Python
python实现决策树、随机森林的简单原理
2018/03/26 Python
Python3.5 创建文件的简单实例
2018/04/26 Python
Python模拟自动存取款机的查询、存取款、修改密码等操作
2018/09/02 Python
python实现RabbitMQ的消息队列的示例代码
2018/11/08 Python
基于python实现的百度音乐下载器python pyqt改进版(附代码)
2019/08/05 Python
Python Django中间件,中间件函数,全局异常处理操作示例
2019/11/08 Python
python中pandas库中DataFrame对行和列的操作使用方法示例
2020/06/14 Python
Python学习之time模块的基本使用
2021/01/17 Python
英国剑桥包官网:The Cambridge Satchel Company
2016/08/01 全球购物
Emporio Armani腕表天猫官方旗舰店:乔治·阿玛尼为年轻人设计的副线品牌
2017/07/02 全球购物
办公室副主任岗位职责
2013/11/25 职场文书
员工薪酬福利制度
2014/01/17 职场文书
教师节简报
2015/07/20 职场文书
2015年高中班级工作总结
2015/07/21 职场文书
创业计划书之电动车企业
2019/10/11 职场文书