在昨天的文章中我們詳細了介紹 何謂 CSS Animation,而今天我們就來了解 Animation 內有哪些屬性可以運用吧!
關鍵幀(keyframes) 是用來指定動畫運作期間個時間點的動畫屬性值。
@keyframes 使用方法如下:
@keyframes <keyfeames-name>{<rule-list>}
none
或 initial
這個關鍵字。/* 普通文字或字串符皆被視為同一規則名稱 */
@keyframes foo { ... }
@keyframes "foo" { ... }
/* 大寫與小寫為不同規則名稱 */
@keyframes foo { ... }
@keyframes FOO { ... }
/* 使用者無法直接使用 inital 或 none 兩個關鍵字 */
@keyframes initial { ... }
@keyframes None { ... }
/* 但若是使用字串符的 "inital" 或 "none" 則可以運行 */
@keyframes "initial" { ... }
@keyframes "None" { ... }
keyframes-block: rule-list 內允許 keyframes-block 所定義的規則,在 keyframe-block 中你可以放入任何 CSS 除了有關於 Aniamtion 的屬性。
but!,人生最重要的這個 but,此規則 可以 使用 animation-time-funciton
屬性並給予其特殊定義。不過由於其內的 CSS 屬性不參與 CSS cascade 所以即便在 keyframes-block 內的屬性上使用 !important
也不會有任何作用。
keyframes-selector: 指定關鍵幀的動畫持續時間,可由百分比 100% 0% 或關鍵字 from to,所組成。
關鍵字 from 等於 百分比 0%, 即起始值、關鍵字 to 等於 百分比 100%,即結束值。小於 0% 或大於 100% 都會被視為無效數值。
注意!
百分比單位 必須 有 % 單位符號,若直接使用 0,是無效的。
若使用者未指定起始值,則起始值會自動從 0% 開始計算,同理,若使用者沒有指定結束值,結束值將會自動設定 100% 。
如前面所敘述。
另外要提到的是,若有重複的 Animation 屬性在不同的 animation-name
,則會由後向前覆蓋。
.box {
animation-name: slide-right;
}
@keyframes slide-right {
<rule-list>
}
定義單個動畫週期的持續時間。
若時間值為 0 ,則對於動畫 keyframes 將會無效,但動畫本身仍會作用,但只會發生在一瞬間。更具體的來說,時間值 0 確實是有觸發整個動畫的開始與結束,只是使用者肉眼無法所見。
而負數的值對於 time 則會無效。
設定動畫在關鍵幀中加速度的函式,此定義了每一個動畫週期的節奏感,可做出握們在前面 動畫12法則中 漸快與漸慢(Slow in and slow out) 效果,可以為一個或多個值。
有關於 timing-function 的定義,會在後面篇章有更詳細的介紹,敬請大家期待。
定義動畫播放次數,初始值為 1,表示動畫會從頭到尾播放 一次,通常此屬性會與 animation-direction
和 alternate
屬性一起使用。讓動畫能夠順暢的在交替循環反向播放。
animation-duration
的數值 0。定義動畫播放方向是由正向或反向起始播放。反向播放時 timing functions
也會相反。舉例來說:正向播放時為 ease-in
,設定反向播放的話則為 ease-out
。
並億動畫是否正常播放或停止運行。
paused
(及重新 running
) 動畫將會從被中斷處開始運行。定義動畫起始時間,即動畫應用到元素上到動畫開始時的時間長度。
0s 為預設值。代表動畫應用到元素後立即執行動作。
若時間長度設定負數,則他會從動畫中間開始進行播放,此時效果看起來像是畫面還沒選染完成便已經開始運作動畫了。
定義當動畫不播放時(在開始前,結束後以及兩者)的元素狀態。此屬性無論是在動畫播放前或後,都不會引響到元素原始 CSS。
animation-iteration-count
>0 時,其應用的值為動畫最後一次所使用的屬性,當 animation-iteration-count
=0 時,其應用的值為第一次開始的屬性。animation-delay
)none
差不多。讀到這邊各位有了解 Animation 每一個屬性的運用了嗎? Animation 能套用的屬性實在是非常多,有時候不太了解的話還是會需要反覆去查詢。
而明天我們會來介紹一下 CSS Animation 事件機制,以及不免俗的帶著大家做一些簡單的小動畫。看來明天的文章也會相當精彩,大家別錯過囉~
我們明天見!ㄅㄅ!