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步執行.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM