CSS3 轉場效果
/* 哪個物件要執行動畫 */
animation: 動畫名稱 播放時間 速度函式 延遲播放時間 次數 方向 填充模式
/* 細項全名 */
animation-name: my-animation; // 動畫名 稱,可以用逗號套用多個 @keyframes
animation-duration: 1s; // 播放時間
animation-timing-function: linear | ease-in-out; // 速度函式
animation-delay: 0.5s; // 延遲多久開始執行
animation-iteration-count: infinite | number; // 播放次數
animation-direction: normal | alternate (來回播放) |
reverse(從 100% 跑回 0 %) | alternate-reverse; // 方向
animation-fill-mode: none | forwards | backwards | both; // 填充模式,動畫執行前後,目標如何套用 CSS Animation
animation-play-state: paused | running; // 定義動畫執行或停止
/* 動畫內容 */
@keyframes 動畫名稱 {
0%{...}
100%{...}
}
CSS 動畫指的是使用以 CSS 定義為主的動畫效果,又可以分成以下兩類:
- CSS3 轉場/過渡(transitions):
- 主要以開始狀態、結束狀態與持續期間(duration)三種參數,以及可指定的漸變函數(transition timing function),將 DOM 元素或網頁上的物件進行轉變。
- CSS3 動畫(animations):
- 又稱為關鍵影格(Keyframe)動畫,可以加入關鍵影格,提供許多動畫片段的組合。
以 CSS 定義為主的動畫相較於使用 JavaScript 程式為主的動畫有一些好處:
- 簡單,對於一些簡單的動畫特效,不需要撰寫程式就可以製作出動畫。
- 低消費,對於電腦資源的消耗非常低。
- 最佳化,瀏覽器對於 CSS 動畫可以提供最佳化,動畫可以運作得相當順暢。
CSS3 轉場與 CSS3 動畫的"相同"之處
- 都是使用 CSS 定義,然後監聽 DOM 元素的改變作出動畫效果
- 都可以設定漸變函數(transition timing function),控制動畫的運動(效果展現)的曲線
- 都可以設定持續期間(duration),控制動畫持續的時間
- 都有對應的 event(事件),可以送出動畫的狀態,可讓 JavaScript 再加以監聽或控制(可程式化)
- 都可以用視覺化方式看到 CSS 屬性正在改變的狀態