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线性渐变简单实现以及该属性在浏览器中的不同
Dec 12 HTML / CSS
使用Filters滤镜弥补CSS3的跨浏览器问题以及兼容低版本IE
Jan 23 HTML / CSS
一款简洁的纯css3代码实现的动画导航
Oct 31 HTML / CSS
关于css兼容性问题及一些常见问题汇总
May 03 HTML / CSS
CSS3中Transition动画属性用法详解
Jul 04 HTML / CSS
用CSS3实现无限循环的无缝滚动的实例代码
Jul 04 HTML / CSS
HTML5离线缓存Manifest是什么
Mar 09 HTML / CSS
HTML5边玩边学(3)像素和颜色
Sep 21 HTML / CSS
HTML5 video 视频标签使用介绍
Feb 03 HTML / CSS
使用HTML5在网页中嵌入音频和视频播放的基本方法
Feb 22 HTML / CSS
常用的HTML5列表标签
Jun 20 HTML / CSS
基于HTML5+tracking.js实现刷脸支付功能
Apr 16 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设计聊天室步步通
2006/10/09 PHP
如何删除多级目录
2006/10/09 PHP
php 面试碰到过的问题 在此做下记录
2011/06/09 PHP
MySQL时间字段究竟使用INT还是DateTime的说明
2012/02/27 PHP
解析curl提交GET,POST,Cookie的简单方法
2013/06/29 PHP
Linux安装配置php环境的方法
2016/01/14 PHP
PHP中session跨子域的三种实现方法
2016/07/25 PHP
ExtJS TabPanel beforeremove beforeclose使用说明
2010/03/31 Javascript
js原型链原理看图说明
2012/07/07 Javascript
jquery sortable的拖动方法示例详解
2014/01/16 Javascript
使用jquery实现放大镜效果
2014/09/02 Javascript
javascript删除元素节点removeChild()用法实例
2015/05/26 Javascript
CSS3实现动态背景登录框的代码
2015/07/28 Javascript
Google 地图叠加层实例讲解
2016/08/06 Javascript
jsonp跨域请求实现示例
2017/03/13 Javascript
angularjs实现分页和搜索功能
2018/01/03 Javascript
Vue 路由 过渡动效 数据获取方法
2018/07/31 Javascript
详解vue挂载到dom上会发生什么
2019/01/20 Javascript
详解Vue中组件的缓存
2019/04/20 Javascript
vue.js 2.0实现简单分页效果
2019/07/29 Javascript
vue 清空input标签 中file的值操作
2020/07/21 Javascript
Python中标准库OS的常用方法总结大全
2017/07/19 Python
Python下载网络小说实例代码
2018/02/03 Python
python socket网络编程之粘包问题详解
2018/04/28 Python
selenium+python实现自动化登录的方法
2018/09/04 Python
解决python中os.listdir()函数读取文件夹下文件的乱序和排序问题
2018/10/17 Python
Python os模块常用方法和属性总结
2020/02/20 Python
python爬虫构建代理ip池抓取数据库的示例代码
2020/09/22 Python
一文带你掌握Pyecharts地理数据可视化的方法
2021/02/06 Python
一款基于css3的列表toggle特效实例教程
2015/01/04 HTML / CSS
Html5让容器充满屏幕高度或自适应剩余高度的布局实现
2020/05/14 HTML / CSS
行政总经理岗位职责
2013/12/05 职场文书
调解协议书范本
2016/03/21 职场文书
话题作文之生命的旋律
2019/12/17 职场文书
SQL Server数据库基本概念、组成、常用对象与约束
2022/03/20 SQL Server
clear 万能清除浮动(clearfix:after)
2023/05/21 HTML / CSS