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 相关文章推荐
CSS中简写属性要注意TRouBLe的顺序问题(避免踩坑)
Mar 09 HTML / CSS
利用HTML5+CSS3实现3D转换效果实例详解
May 02 HTML / CSS
css3 flex布局 justify-content:space-between 最后一行左对齐
Jan 02 HTML / CSS
基于CSS3的animation属性实现微信拍一拍动画效果
Jun 22 HTML / CSS
分享29个基于Bootstrap的HTML5响应式网页设计模板
Nov 19 HTML / CSS
localStorage、sessionStorage使用总结
Nov 17 HTML / CSS
canvas如何绘制钟表的方法
Dec 13 HTML / CSS
Html5 APP中监听返回事件处理的方法示例
Mar 15 HTML / CSS
canvas绘制太极图的实现示例
Apr 29 HTML / CSS
浅析数据存储的三种方式 cookie sessionstorage localstorage 的异同
Jun 04 HTML / CSS
HTML中table表格拆分合并(colspan、rowspan)
Apr 07 HTML / CSS
CSS实现九宫格布局(自适应)的示例代码
Feb 12 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与已存在的Java应用程序集成
2006/10/09 PHP
php 生成随机验证码图片代码
2010/02/08 PHP
PHP zlib扩展实现页面GZIP压缩输出
2010/06/17 PHP
PHP5中新增stdClass 内部保留类
2011/06/13 PHP
ThinkPHP表单自动验证实例
2014/10/13 PHP
php中static和const关键字用法分析
2016/12/07 PHP
php回调函数处理数组操作示例
2020/04/13 PHP
超棒的javascript页面顶部卷动广告效果
2007/12/01 Javascript
Javascript 跨域访问解决方案
2009/02/14 Javascript
一个简单的JavaScript数据缓存系统实现代码
2010/10/24 Javascript
js实现人民币大写金额形式转换
2016/04/27 Javascript
javascript加减乘除的简单实例
2016/07/12 Javascript
Vue.js每天必学之过渡与动画
2016/09/06 Javascript
vue指令以及dom操作详解
2017/03/04 Javascript
JavaScript中的遍历详解(多种遍历)
2017/04/07 Javascript
纯js实现画一棵树的示例
2017/09/05 Javascript
vue-router2.0 组件之间传参及获取动态参数的方法
2017/11/10 Javascript
vue-cli的工程模板与构建工具详解
2018/09/27 Javascript
微信小程序BindTap快速连续点击目标页面跳转多次问题处理
2019/04/08 Javascript
VUE动态生成word的实现
2020/07/26 Javascript
js 函数性能比较方法
2020/08/24 Javascript
Python中的is和==比较两个对象的两种方法
2017/09/06 Python
Python第三方Window模块文件的几种安装方法
2018/11/22 Python
python将一个英文语句以单词为单位逆序排放的方法
2018/12/20 Python
python创建n行m列数组示例
2019/12/02 Python
Python with语句和过程抽取思想
2019/12/23 Python
基于Python绘制个人足迹地图
2020/06/01 Python
不可轻视HTML5!App三年内将被html5顶替彻底消失
2015/11/18 HTML / CSS
美国著名的团购网站:Woot
2016/08/02 全球购物
Notino希腊:购买香水和美容产品
2019/07/25 全球购物
美国厨房和园艺工具网上商店:Nestneed
2019/08/24 全球购物
社区春季防火方案
2014/06/02 职场文书
2014年度党员自我评议
2014/09/13 职场文书
工作失职检讨书500字
2014/10/17 职场文书
少年派的奇幻漂流观后感
2015/06/08 职场文书
golang定时器
2022/04/14 Golang