在進(jìn)行CSS動(dòng)畫設(shè)計(jì)時(shí),我們會(huì)經(jīng)常用到關(guān)于動(dòng)畫播放進(jìn)度的概念。而播放進(jìn)度的單位通常是以百分比(%)或者幀數(shù)(frame)為基礎(chǔ)。
當(dāng)我們根據(jù)需求設(shè)計(jì)一個(gè)CSS動(dòng)畫時(shí),一般我們會(huì)非常清楚地知道希望動(dòng)畫在哪些時(shí)間點(diǎn)(或者幀里)進(jìn)行什么操作。但實(shí)際上,CSS并沒有提供直接指定動(dòng)畫播放到第幾幀的方法。所以,我們需要用一些技巧來模擬這個(gè)過程。
其中最簡(jiǎn)單的方法是通過設(shè)置關(guān)鍵幀,例如:
@keyframes myanimation { 0% { background-color: #000; } 25% { background-color: #f00; } 50% { background-color: #0f0; } 75% { background-color: #00f; } 100% { background-color: #888; } }
在這個(gè)例子中,我們以關(guān)鍵幀的方式指定了myanimation動(dòng)畫在播放過程中不同幀的狀態(tài)。如果我們想讓動(dòng)畫直接跳轉(zhuǎn)到播放到25%的進(jìn)度,我們可以使用animation-play-state屬性將動(dòng)畫暫停,然后手動(dòng)將其設(shè)置成25%:
.myanimation { animation-name: myanimation; animation-play-state: paused; } .myanimation.paused { animation-play-state: running; animation: myanimation 1s steps(25, end) forwards; }
這里,我們首先為.myanimation元素設(shè)置animation-play-state: paused屬性使得動(dòng)畫暫停,然后通過為其添加.paused類來將動(dòng)畫設(shè)置成在1秒內(nèi)直接跳到播放到25%的幀。其中,steps(25, end)這個(gè)函數(shù)用來指定以25幀階躍形式播放動(dòng)畫,而forwards這個(gè)關(guān)鍵字則用來設(shè)置動(dòng)畫播放結(jié)束后將停留在最后一幀。這樣,當(dāng)我們將.paused類移除時(shí),動(dòng)畫會(huì)從25%進(jìn)度開始播放。
總之,在CSS動(dòng)畫設(shè)計(jì)中,了解幀的概念是非常重要的。通過巧妙地設(shè)置關(guān)鍵幀,我們可以在設(shè)計(jì)中實(shí)現(xiàn)許多動(dòng)畫交互效果。