2016-11-26 46 views
0

我正在製作一個css動畫來切換元素的背景顏色。css動畫有兩個步驟,沒有轉換

此動畫只有兩個階段,兩個階段之間沒有平滑過渡。

這意味着,前50%的動畫,背景顏色將是blue,以及動畫的最後50%,背景顏色將爲grey,而不會在兩者之間進行轉換。

這裏是完全正常的動畫:

div { 
 
    width: 200px; 
 
    height: 200px; 
 
    animation: bg 4s linear infinite; 
 
} 
 

 
@keyframes bg { 
 
    0% { 
 
    background: blue; 
 
    } 
 
    50% { 
 
    background: blue; 
 
    } 
 
    50.00001% { 
 
    background: grey; 
 
    } 
 
    100% { 
 
    background: grey; 
 
    } 
 
}
<div></div>

我不知道是否有做一個簡單的方法。我正在尋找的是在keyframes內只使用fromto,而不需要任何額外的步驟。

+0

如果任何解決方案在幫助你,它標記通過點擊相應的答案側面的刻度所接受。 – Harry

回答

4

您可以使用animation-timing-function: steps(1)來實現它,如下面的代碼片段所示。您可以在MDN中找到有關animation-timing-functionhere和通用stepshere的更多詳細信息。

div { 
 
    width: 200px; 
 
    height: 200px; 
 
    animation: bg 4s steps(1) infinite; 
 
} 
 

 
@keyframes bg { 
 
    0% { 
 
    background: blue; 
 
    } 
 
    50% { 
 
    background: grey; 
 
    } 
 
}
<div></div>

注:我在50%而不是100%設置grey顏色關鍵幀由於this answer討論了這個問題。

0

您也可以使用快捷符號:

div { 
 
    width: 200px; 
 
    height: 200px; 
 
    animation: bg 4s linear infinite; 
 
} 
 

 
@keyframes bg { 
 
    from, 50% { 
 
    background: blue; 
 
    } 
 
    50.00001%, to { 
 
    background: grey; 
 
    } 
 
}
<div></div>