zoukankan      html  css  js  c++  java
  • css3动画中的steps值详解

    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(1,end)改成ease,就会流畅的动画,元素缓缓的移动.

    但如果定义成steps(1,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步执行.

  • 相关阅读:
    Q:简单实现URL只能页面跳转,禁止直接访问
    Q:elementUI中tree组件动态展开
    一个切图仔的 JS 笔记
    一个切图仔的HTML笔记
    一个切图仔的 CSS 笔记
    GnuPG使用笔记
    SQL Svr 2012 Enterprise/Always-on节点连接超时导致节点重启——case分享
    网卡配置文件备份在原目录下引起网络配置异常
    python培训
    service脚本的写法
  • 原文地址:https://www.cnblogs.com/liulangmao/p/4839012.html
Copyright © 2011-2022 走看看