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+jq创作含苞待放的荷花
Feb 20 HTML / CSS
css3中新增的样式使用示例附效果图
Aug 19 HTML / CSS
一款纯css3实现的鼠标经过按钮特效教程
Nov 09 HTML / CSS
css3实现文字扫光渐变动画效果的示例
Nov 07 HTML / CSS
纯CSS3实现的井字棋游戏
Nov 25 HTML / CSS
Html5新标签解释及用法
Feb 17 HTML / CSS
HTML5通过调用canvas对象的getContext()方法来获取绘图环境
Jun 23 HTML / CSS
HTML5中判断横屏竖屏的方法(移动端)
Aug 04 HTML / CSS
Canvas与图片压缩的示例代码
Nov 28 HTML / CSS
关于canvas绘制模糊问题的解决方法
Sep 24 HTML / CSS
html5自定义video标签的海报与播放按钮功能
Dec 04 HTML / CSS
CSS3 天气图标动画效果
Apr 06 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学习笔记 类的声明与对象实例化
2011/06/13 PHP
Yii框架日志操作图文与实例详解
2019/09/09 PHP
PHP中通过getopt解析GNU C风格命令行选项
2019/11/18 PHP
Javascript - HTML的request类
2007/01/09 Javascript
jquery判断单个复选框是否被选中的代码
2009/09/03 Javascript
innerText 使用示例
2014/01/23 Javascript
类似天猫商品详情随浏览器移动的示例代码
2014/02/27 Javascript
Egret引擎开发指南之运行项目
2014/09/03 Javascript
深入理解JavaScript系列(37):设计模式之享元模式详解
2015/03/04 Javascript
js自定义回调函数
2015/12/13 Javascript
jQuery+ajax实现文章点赞功能的方法
2015/12/31 Javascript
jQuery实现调整表格单列顺序完整实例
2016/06/20 Javascript
JS监听微信、支付宝等移动app及浏览器的返回、后退、上一页按钮的事件方法
2016/08/05 Javascript
微信小程序 生命周期详解
2016/10/12 Javascript
用file标签实现多图文件上传预览
2017/02/14 Javascript
推荐三款日期选择插件(My97DatePicker、jquery.datepicker、Mobiscroll)
2017/04/21 jQuery
微信小程序常用简易小函数总结
2019/02/01 Javascript
详解Node.js一行命令上传本地文件到服务器
2019/04/22 Javascript
浅谈Vue static 静态资源路径 和 style问题
2020/11/07 Javascript
[05:17]DOTA2誓师:今天我们在这里 明天TI4等我!
2014/03/26 DOTA
python网络爬虫采集联想词示例
2014/02/11 Python
在Django的模型和公用函数中使用惰性翻译对象
2015/07/27 Python
python 将html转换为pdf的几种方法
2020/12/29 Python
Roxy荷兰官方网站:冲浪、滑雪板、服装和配件
2019/10/22 全球购物
索引覆盖(Index Covering)查询含义
2012/02/18 面试题
什么是反射?如何实现反射?
2016/07/25 面试题
九月份红领巾广播稿
2014/01/22 职场文书
《最大的麦穗》教学反思
2014/04/17 职场文书
医学生求职自荐书
2014/06/12 职场文书
2015年老干部工作总结
2015/04/23 职场文书
党员转正申请报告
2015/05/15 职场文书
婚前协议书怎么写,才具有法律效力呢 ?
2019/06/28 职场文书
Python机器学习之逻辑回归
2021/05/11 Python
HTML5简单实现添加背景音乐的几种方法
2021/05/12 HTML / CSS
MySQL官方导出工具mysqlpump的使用
2021/05/21 MySQL
JavaScript事件的委托(代理)的用法示例详解
2022/02/18 Javascript