css3的动画的animation-timing-function属性定义了动画的速度曲线,一般的速度曲线大家都知道,什么ease,linear,ease-in,ease-out,还有自定义贝塞尔曲线...定义了animation-timing-function后,动画就会按照定义的曲线来执行动画.

但是除了这些值以外,animation-timing-function值还可以是steps(x,startend),它接受两个参数.下面会具体解释.

如果定义曲线,则动画帧与帧之间会流畅的进行,而定义steps,则表示直接跳跃进行,动画直接从一个帧切换到另一个帧.

举个栗子:

    <style>
div {
width:200px;
height:600px;
background:#C0DCC0;
margin-left:0;
-webkit-animation:ani 10s steps(1,end);
}
@-webkit-keyframes ani {
0% {
margin-left:0px
}
50% {
margin-left:100px
}
100% {
margin-left:200px
}
}
</style>

有这样一个div,给它定义一个动画改变margin-left值,如果把steps(,end)改成ease,就会流畅的动画,元素缓缓的移动.

但如果定义成steps(,end),那么整个动画就会分为三帧,0%,50%,100%,元素会一下子移动到100px,再一下子移动到200px,具体效果可以点击这里试一下: demo

仔细观察: 元素从0px开始,过了5s后移动到了100px,过了10s后又回到了0px...

然后把'end'改为'start'再观察: 元素从100px开始,过了5s后移动到了200px,过了10s后又回到了100px...

这就解释了steps的第二个参数startend的作用,它定义了动画开始的状态,比如这里10s,那么从0%到50%间隔是5s,而改变只需要一瞬间,那么到底是在5s的开始改变,还是在5s的结束时发生改变呢? 这就需要第二个参数去决定.

如果是start,就是在开始的时候改变,如果是end,就是在结束的时候改变.

再来看steps的第一个参数x,它是一个数字.还是拿刚才的demo举例子.在x为1的时候,5s的时间,元素从margin-left:0直接变成margin-left:100px.尝试把x改为2,可以看到,同样在5s的时间,元素先从margin-left:0,移动到了margin-left:50px的位置,然后再移动到margin-left:100px.所以,x这个参数的意思就是: 帧与帧之间的切换分为x步执行.

css3动画中的steps值详解的更多相关文章

  1. 【译】css动画里的steps()用法详解

    原文地址:http://designmodo.com/steps-c... 原文作者:Joni Trythall 我想你在css 动画里使用steps()会和我一样有很多困惑.一开始我不清楚怎样使用它 ...

  2. PHP $_FILES中error返回值详解

    $_FILES['file']['error']值 UPLOAD_ERR_OK: 0 //正常,上传成功 UPLOAD_ERR_INI_SIZE: 1 //上传文件大小超过服务器允许上传的最大值,ph ...

  3. php 文件上传$_FILES中error返回值详解

    用PHP上传文件时,我们会用程序去监听浏览器发送过来的文件信息,首先会通 过$_FILES[fieldName]['error']的不同数值来判断此欲上传的文件状态是否正常.$_FILES[field ...

  4. 用PHP上传文件时$_FILES中error返回值详解

    用PHP上传文件时,我们会用程序去监听浏览器发送过来的文件信息,首先会通 过$_FILES[fieldName]['error']的不同数值来判断此欲上传的文件状态是否正常.$_FILES[field ...

  5. 浅谈CSS3动画的凌波微步--steps()

    背景 一日敲代码的我,得到一个需求:写一个10秒的倒计时. 用JavaScript定时器麻溜写完之后,恰好同事勇司机接完水.瞟了一眼,然后凑过来说,这个用CSS3也可以写,而且一行JavaScript ...

  6. CSS3教程:pointer-events属性值详解 阻止穿透点击

    转:http://www.poluoluo.com/jzxy/201109/142876.html 在某个项目中,很多元素需要定位在一个地图层上面,这里就要用到很多绝对定位或者相对定位的元素,但是这样 ...

  7. css3中user-select的用法详解

    css3中user-select的用法详解 user-select属性是css3新增的属性,用于设置用户是否能够选中文本.可用于除替换元素外的所有元素,以下是user-select的主要用法和注意事项 ...

  8. CSS3之多列布局columns详解

    CSS3之多列布局columns详解 CSS3提供了个新属性columns用于多列布局.基本属性如下: 1. columns: <'column-width'> || <'colum ...

  9. pointer-events属性值详解

    其实早知道这个属性,但是一直没有去研究过.今天正好在twitter看到这个词,就去研究了下,正好解决了目前遇到的一个小难题,所以分享下.嗯,其实这是个比较简单的CSS3属性. 在某个项目中,很多元素需 ...

随机推荐

  1. yii cookie ,session 操作

    一,在Yii中使用session 1,CHttpSession 与原生态php5的session使用差别是,php5使用session_start();$_session['key'] = $valu ...

  2. 导致VC不能释放的几个原因

    delegate的属性不是weak NSTimer没有invalidate block中的强引用 调用了performSelector,退出时没有cancelPerformSelectorsWithT ...

  3. JSON 转javabean 利器

    别再对着json来手写javabean啦.这个工作完全不要脑子,而且耗时. 这里给大家提供三种方式: android studio版: 万能的插件:GsonFormat 如何安装? Preferenc ...

  4. Android对话框

    这周过的实在是艰辛,自打这周二起我的本本就开始闹"罢工",最后还是重装系统了事. . .   只是可怜了我的那些被格了的软件(悲伤辣么大)!  往事不要再提,人生几度风雨... 简 ...

  5. iOS 页面跳转传值,属性传值,代理传值,代码块传值,单例传值,通知传值

    有时候我们在页面跳转的时候回传递相应的参数,如,你想把在第一个页面的文本框里的内容显示在第二个文本框中,或者你又想把第二个文本框中的内容改变之后到第一个页面的文本框中,所有,这个时候我们就要用到页面跳 ...

  6. 单例模式-用GCD实现

    用GCD实现单例模式的步骤: 步骤1. 创建头文件 XZSingleton.h,里面代码如下: // .h文件 #define XZSingletonH(name) + (instancetype)s ...

  7. Unknown tag

    <c:forEach items="" var="" varStatus="s">缺少<%@ taglib uri=&qu ...

  8. Sql Server之旅——第十站 看看DML操作对索引的影响

    我们都知道建索引是需要谨慎的,当只有利大于弊的时候才适合建,我们也知道建索引是需要维护成本的,这个维护也就在于DML操作了, 下面我们具体看看到底DML对索引都有哪些内幕.... 一:delete操作 ...

  9. Zookeeper 服务注册和发现

    Zookeeper 分布式服务框架是 Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务.状态同步服务.集群管理.分布式应用配置项的管理 ...

  10. Docker是什么

    Docker是什么 相信我们很多人都使用多VM(Virtual Machine),也就是虚拟机,简单的来说Docker就是类是于VM的容器,但Docker要轻量得多,VM(Virtual Machin ...