animation-timing-function的steps详解
W3C里的定义:
animation-timing-function 规定动画的速度曲线。
这个属性有很多取值,
linear:
线性过渡。等同于贝塞尔曲线(0.0, 0.0, 1.0, 1.0)
ease:
平滑过渡。等同于贝塞尔曲线(0.25, 0.1, 0.25, 1.0)
ease-in:
由慢到快。等同于贝塞尔曲线(0.42, 0, 1.0, 1.0)
ease-out:
由快到慢。等同于贝塞尔曲线(0, 0, 0.58, 1.0)
ease-in-out:
由慢到快再到慢。等同于贝塞尔曲线(0.42, 0, 0.58, 1.0)
step-start:
等同于 steps(1, start)
step-end:
等同于 steps(1, end)
steps(<integer>[, [ start | end ] ]?):
接受两个参数的步进函数。第一个参数必须为正整数,指定函数的步数。第二个参数取值可以是start或end,指定每一步的值发生变化的时间点。第二个参数是可选的,默认值为end。
cubic-bezier(<number>, <number>, <number>, <number>):
特定的贝塞尔曲线类型,4个数值需在[0, 1]区间内
然后今天我想巴拉的是steps(1,start)和steps(1,end)的区别;
首先,
steps(<integer>[, [ start | end ] ]?):
接受两个参数的步进函数。
第一个参数必须为正整数,指定了函数中的间隔数量。
第二个参数取值可以是start或end,指定每一步的值发生变化的时间点。
第二个参数是可选的,默认值为end。
step-start等同于steps(1,start),动画分成1步,动画执行时为开始左侧端点的部分为开始;
step-end等同于steps(1,end):动画分成一步,动画执行时以结尾端点为开始,默认值为end。
上例子吧!
.bird{
min-width: 91px;
min-height: 71px;
background: url(../img/bird.png) -182px 0px no-repeat;
}
.birdFly {
animation: bird-slow 900ms infinite steps(1,start);
}
@keyframes bird-slow{
0% {
background-position: -182px 0px;//第三只小鸟
}
50% {
background-position: 0px 0px;//第一只小鸟
}
75% {
background-position: -91px 0px;//第二只小鸟
}
100% {
background-position: -182px 0px;//第三只小鸟
}
}
图片是这张雪碧图;动画效果就是模拟小鸟展翅飞翔,一直扇动翅膀;默认是先显示第三只小鸟
steps(1,start);第一个参数为1的意思就是,每俩关键帧之间只要1步完成,也就是0%-50%,只分为一步完成,50%-75%,也是一步完成;以此类推;注意steps的设置都是针对两个关键帧之间的,而非是整个keyframes;
timing-function 作用于每两个关键帧之间,而不是整个动画。
steps(1,start) : 第一只鸟和第二只鸟相互切换
steps(1,end) : 第三只鸟和第一只鸟相互切换
start跳过0%,end跳过100%
step-start在变化过程中,都是以下一帧的显示效果来填充间隔动画,所以0% 到 50% 直接就显示了第一只鸟
step-end与上面相反,都是以上一帧的显示效果来填充间隔动画,所以0% 到 50% 直接就显示了第三只鸟
然后思考下,此时我们设置成start,小鸟会是怎样的呢?
答案是:
start:进入页面就会显示第一只小鸟,因为跳过了0%;
end:进入页面就会显示第三只小鸟,因为跳过了100%;
所以如果你一进来想显示小鸟展翅的样子就得是start,如果是一进来展示小鸟收翅膀的样子,那就设置成end;
个人觉得一进来看到小鸟展翅的样子还是比较喜欢的,哇哈哈哈、
再说下"forwards"和"infinite"
使用"forwards"和"infinite"对步数的的作用是不同的。
如果我们改变成"infinite",将不会出现"100%",因为"forwards"命令使动画在我们设置的步数外添加了额外的一步。
"forwards"使动画保持结束时的状态,所以在步数执行完毕后,动画会跳到最后一帧的状态并保持不变。
(做那种雨滴滴下来,然后种子就发芽,然后就长成了参天大树,就定格到最后一帧的大树的效果;animation: grow 4s steps(36) forwards;这里的steps是你的雪碧图里的图片的数量减一哦)
.sapling .seed.active{
background: url(../images/img2.png) no-repeat;
width: 330px;
height:430px;
left: 373px;
bottom: 250px;
animation:grow 4s steps(36) forwards; //37张图 减去一张
-webkit-animation:grow 4s steps(36) forwards;
}
@keyframes grow {
from {
background-position: 0 0
}
to {
//雪碧图总高15910px 这里减去一张图的高度
background-position: 0 -15480px
}
}
总结:
steps函数,它可以传入两个参数,第一个是分成多少步完成,第二个参数可选,决定显示效果(是上一帧填充还是下一帧填充);
steps的设置都是针对两个关键帧之间的,而非是整个keyframes;
timing-function 作用于每两个关键帧之间,而不是整个动画;
"forwards"命令使动画在我们设置的步数外添加了额外的一步。
animation-timing-function的steps详解的更多相关文章
- animation-timing-function: steps() 详解
在应用 CSS3 渐变/动画时,有个控制时间的属性 <animation-timing-function> .它的取值中除了常用到的 贝萨尔曲线以外,还有个让人比较困惑的 steps() ...
- (function($){...})(jQuery) 函数详解
function(arg){...} 这是一个匿名函数,参数是arg. 而调用匿名函数时,是在函数后面写上括号和实参的,由于操作符的优先级,函数本身也需要用括号,即: function(arg){.. ...
- JavaScript Function.apply() 函数详解
apply()函数用于调用当前函数functionObject,并可同时使用指定对象thisObj作为本次函数执行时函数内部的this指针引用. 该函数属于Function对象,所有主流浏览器均支持该 ...
- JavaScript Function.arguments 属性详解
语法 [functionObject.]arguments arguments属性是正在执行的函数的内置属性,返回该函数的arguments对象.arguments对象包含了调用该函数时所传入的实际参 ...
- JavaScript Function.call() 函数详解
语法 functionObject.call( [ thisObj [, arg1 [, arg2 [, args...]]]] ) call()函数用于调用当前函数functionObject,并可 ...
- ExtJS:GridPanel之renderer:function()和itemdblclick : function()方法参数详解
要使用GridPanel,首先要定义Store,而在创建Store的时候必须要有Model,因此我们首先来定义Model: Ext.define("Gpsdata", { exte ...
- android animation中的参数interpolator详解
android:interpolator interpolator 被用来修饰动画效果,定义动画的变化率,可以使存在的动画效果可以 accelerated(加速),decelerated(减速), ...
- 超级强大的SVG SMIL animation动画详解
本文花费精力惊人,具有先驱前瞻性,转载规则以及申明见文末,当心予以追究.本文地址:http://www.zhangxinxu.com/wordpress/?p=4333 //zxx: 本文的SVG在有 ...
- js Function 加不加new 详解
以下来自:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/new The new operato ...
随机推荐
- 解决Hystrix Dashboard 一直是Loading ...的情况
Hystrix是什么 Hystrix 能使你的系统在出现依赖服务失效的时候,通过隔离系统所依赖的服务,防止服务级联失败,同时提供失败回退机制,更优雅地应对失效,并使你的系统能更快地从异常中恢复. Hy ...
- MIPCMS V3.1.0 远程写入配置文件Getshell过程分析(附批量getshell脚本)
作者:i春秋作家--F0rmat 0×01 前言 今天翻了下CNVD,看到了一个MIPCMS的远程代码执行漏洞,然后就去官网下载了这个版本的源码研究了下.看下整体的结构,用的是thinkPHP的架 ...
- werkzeug(flask)中的local,localstack,localproxy探究
1.关于local python中有threading local处理方式,在多线程环境中将变量按照线程id区分 由于协程在Python web中广泛使用,所以threading local不再满足需 ...
- Python中的classmethod与staticmethod
首先,这是一个经典的问题. 我们首先做一个比较: classmethod的第一个参数是cls,即调用的时候要把类传入 这意味着我们我们可以在classmethod里使用类的属性,而不是类的实例的属性( ...
- Java基础学习笔记二十四 MySQL安装图解
.MYSQL的安装 1.打开下载的mysql安装文件mysql-5.5.27-win32.zip,双击解压缩,运行“setup.exe”. 2.选择安装类型,有“Typical(默认)”.“Compl ...
- C#基础(二)拆箱与装箱,循环与选择结构,枚举
一.装箱和拆箱 装箱是将值类型转换为引用类型 eg: Int a=5; Object o=a; 拆箱是将引用类型转换为值类型 eg: Int a=5; Object o=a; Int b=(int ...
- 【java并发系列】Fork/Join任务(转)
原文链接 当我们需要执行大量的小任务时,有经验的Java开发人员都会采用线程池来高效执行这些小任务.然而,有一种任务,例如,对超过1000万个元素的数组进行排序,这种任务本身可以并发执行,但如何拆解成 ...
- Alpha第三天
Alpha第三天 听说 031502543 周龙荣(队长) 031502615 李家鹏 031502632 伍晨薇 031502637 张柽 031502639 郑秦 1.前言 任务分配是VV.ZQ. ...
- beta版本复审
C++team复审 小组 优点 缺点 打分 MyGod小组 MyGod团队开发了一个让武汉大学的学生能够方便地了解校内二手物品交易信息,并进行相应的交易的安卓app.出发点不错,有创新点.使用了一下他 ...
- python 堆排序
堆排序就是把堆顶的最大数取出, 将剩余的堆继续调整为最大堆,具体过程在第二块有介绍,以递归实现 剩余部分调整为最大堆后,再次将堆顶的最大数取出,再将剩余部分调整为最大堆,这个过程持续到剩余数只有一个时 ...