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实现的动画加载导航
Oct 08 HTML / CSS
HTML5+CSS3 实现灵动的动画 TAB 切换效果(DEMO)
Sep 15 HTML / CSS
html5应用缓存_动力节点Java学院整理
Jul 13 HTML / CSS
HTML5 中新的全局属性(整理)
Jul 31 HTML / CSS
HTML5 script元素async、defer异步加载使用介绍
Aug 23 HTML / CSS
html5 css3网站菜单实现代码
Dec 23 HTML / CSS
html5+svg学习指南之SVG基础知识
Dec 17 HTML / CSS
HTML5制作表格样式
Nov 15 HTML / CSS
使用phonegap进行本地存储的实现方法
Mar 31 HTML / CSS
canvas 阴影和图形变换的示例代码
Jan 02 HTML / CSS
使用canvas对多图片拼合并导出图片的方法
Aug 28 HTML / CSS
CSS3新特性详解(五):多列columns column-count和flex布局
Apr 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
php url地址栏传中文乱码解决方法集合
2010/06/25 PHP
PHP+JS+rsa数据加密传输实现代码
2011/03/23 PHP
PHP在不同页面间传递Json数据示例代码
2013/06/08 PHP
一致性哈希算法以及其PHP实现详细解析
2013/08/24 PHP
PHP中Http协议post请求参数
2015/11/02 PHP
PHP5.3新特性小结
2016/02/14 PHP
ThinkPHP路由机制简介
2016/03/23 PHP
animate动画示例(泪奔的小孩)及stop和delay的使用
2013/05/06 Javascript
使用node.js半年来总结的 10 条经验
2014/08/18 Javascript
js解决select下拉选不中问题
2014/10/14 Javascript
jQuery实现自动调整字体大小的方法
2015/06/15 Javascript
关于Node.js中Buffer的一些你可能不知道的用法
2017/03/28 Javascript
微信小程序“摇一摇”的实例代码
2017/07/20 Javascript
js动态引入的四种方法
2018/05/05 Javascript
Vue.Draggable拖拽功能的配置使用方法
2020/07/29 Javascript
基于jsbarcode 生成条形码并将生成的条码保存至本地+源码
2020/04/27 Javascript
element跨分页操作选择详解
2020/06/29 Javascript
Vue-router编程式导航的两种实现代码
2021/03/04 Vue.js
[50:29]2014 DOTA2华西杯精英邀请赛 5 24 DK VS iG
2014/05/26 DOTA
[01:47]2018年度DOTA2最佳教练-完美盛典
2018/12/16 DOTA
通过python下载FTP上的文件夹的实现代码
2013/02/10 Python
Python实现队列的方法
2015/05/26 Python
Python的Django中将文件上传至七牛云存储的代码分享
2016/06/03 Python
Python 忽略warning的输出方法
2018/10/18 Python
在pycharm中设置显示行数的方法
2019/01/16 Python
Python 给定的经纬度标注在地图上的实现方法
2019/07/05 Python
Django应用程序入口WSGIHandler源码解析
2019/08/05 Python
PyCharm 2020.1版安装破解注册码永久激活(激活到2089年)
2020/09/24 Python
用python读取xlsx文件
2020/12/17 Python
即时搜索数百万张门票:SeatsForEveryone.com
2018/08/26 全球购物
任课老师推荐信范文
2013/11/24 职场文书
个人先进事迹材料范文
2014/12/29 职场文书
内勤岗位职责
2015/02/10 职场文书
李强优秀员工观后感
2015/06/16 职场文书
使用 Koa + TS + ESLlint 搭建node服务器的过程详解
2022/05/30 NodeJs
利用Redis实现点赞功能的示例代码
2022/06/28 Redis