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 简写animation
May 10 HTML / CSS
CSS3 Flexbox中flex-shrink属性的用法示例介绍
Dec 30 HTML / CSS
CSS3网格的三个新特性详解
Apr 04 HTML / CSS
基础的CSS3弹性盒Flexbox布局使用实例
Apr 08 HTML / CSS
前端隐藏出边界内容的实现方法
Apr 14 HTML / CSS
HTML5 canvas 基本语法
Aug 26 HTML / CSS
Html5新标签解释及用法
Feb 17 HTML / CSS
html5教程调用绘图api画简单的圆形代码分享
Dec 04 HTML / CSS
AmazeUI 面板的实现示例
Aug 17 HTML / CSS
HTML5拖拽文件上传的示例代码
Mar 04 HTML / CSS
CSS3通过var()和calc()函数实现动画特效
Mar 30 HTML / CSS
关于CSS浮动与取消浮动的问题
Jun 28 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
一个用于网络的工具函数库
2006/10/09 PHP
php代码收集表单内容并写入文件的代码
2012/01/29 PHP
php数组合并array_merge()函数使用注意事项
2014/06/19 PHP
PHP 正则表达式常用函数
2014/08/17 PHP
PHP实现服务器状态监控的方法
2014/12/09 PHP
简单谈谈PHP面向对象之标识对象
2017/06/27 PHP
PHP重置数组为连续数字索引的几种方式总结
2018/03/12 PHP
PHP中Static(静态)关键字功能与用法实例分析
2019/04/05 PHP
JavaScript闭包 懂不懂由你反正我是懂了
2011/10/21 Javascript
jquery 获取标签名(tagName)示例代码
2013/07/11 Javascript
使用jquery实现放大镜效果
2014/09/02 Javascript
jQuery中bind(),live(),delegate(),on()绑定事件方法实例详解
2016/01/19 Javascript
js获取隐藏元素宽高的实现方法
2016/05/19 Javascript
AngularJS实现DOM元素的显示与隐藏功能
2016/11/22 Javascript
关于Node.js中Buffer的一些你可能不知道的用法
2017/03/28 Javascript
修改 bootstrap table 默认detailRow样式的实例代码
2017/07/21 Javascript
jQuery实现火车票买票城市选择切换功能
2017/09/15 jQuery
Vue不能观察到数组length的变化
2018/06/08 Javascript
Vue 实现把表单form数据 转化成json格式的数据
2019/10/29 Javascript
JavaScript中的惰性载入函数及优势
2020/02/18 Javascript
Python访问MySQL封装的常用类实例
2014/11/11 Python
10 行 Python 代码教你自动发送短信(不想回复工作邮件妙招)
2018/10/11 Python
python re模块匹配贪婪和非贪婪模式详解
2020/02/11 Python
python GUI库图形界面开发之PyQt5控件QTableWidget详细使用方法与属性
2020/02/25 Python
keras实现多种分类网络的方式
2020/06/11 Python
英国第一的购买便宜玩具和游戏的在线购物网站:Bargain Max
2018/01/24 全球购物
跟单业务员岗位职责
2014/03/08 职场文书
陈欧广告词
2014/03/14 职场文书
小学三八妇女节活动方案
2014/03/16 职场文书
党支部创先争优活动总结
2014/08/28 职场文书
2015年世界无烟日活动总结
2015/02/10 职场文书
教师节主题班会方案
2015/08/17 职场文书
2016寒假社会实践心得体会范文
2015/10/09 职场文书
导游词之临安白水涧
2019/11/05 职场文书
微信小程序scroll-view不能左右滑动问题的解决方法
2021/07/09 Javascript
DQL数据查询语句使用示例
2022/12/24 MySQL