CSS animation 動畫 | 梧所不學

CSS animation 動畫 | 梧所不學

更新於 發佈於 閱讀時間約 4 分鐘

CSS 動畫提供了一種純粹透過樣式表,為網頁元素添加動態效果的方法,不需依賴 JavaScript 或其他外部函式庫。​本文將介紹 CSS 動畫的基本概念與應用,幫助你理解並使用 CSS animation。

CSS 動畫的基本概念

CSS 動畫的重點在於 @keyframes@keyframes 定義了動畫的關鍵影格,描述元素在特定時間點應呈現的樣式。​透過設定不同的百分比或關鍵字(如 from 和 to),可以指定動畫的起始與結束狀態,以及中間過渡的樣式。

/* from 和 to 關鍵字 */
@keyframes fade {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
  }
}

/* 使用百分比來精確控制 */
@keyframes fade {
  0% {
    opacity: 1;
  }
  50% {
    opacity: 0.5;
  }
  100% {
    opacity: 0;
  }
}

animation 屬性

定義完 @keyframes 後,需要將動畫套用到特定的元素上。​這可以透過 animation 屬性來實現。​animation 是多個子屬性的縮寫:

  • animation-name:指定要使用的動畫名稱,對應 @keyframes 定義的名稱。
  • animation-duration:動畫持續時間。
  • animation-timing-function:動畫的速度曲線。
  • animation-delay:動畫開始前的延遲時間。
  • animation-iteration-count:動畫重複次數,infinite 表示無限次。
  • animation-direction:動畫播放方向,如 normal、reverse、alternate 等。
  • animation-fill-mode:​設定動畫開始前和結束後,元素的樣式狀態。
  • animation-play-state:控制動畫的播放或暫停。
div {
  animation-name: fade;
  animation-duration: 2s;
  animation-timing-function: ease-in-out;
  animation-delay: 1s;
  animation-iteration-count: infinite;
  animation-direction: alternate;
  animation-fill-mode: both;
}

動畫速度曲線:animation-timing-function

animation-timing-function 屬性決定動畫在不同時間點的速度變化,以下是常用的值:

  1. linear:動畫從頭到尾以相同速度進行。​
  2. ease:動畫以較慢的速度開始和結束,中間速度較快。​
  3. ease-in:動畫以較慢的速度開始,然後加快。​
  4. ease-out:動畫以較快的速度開始,然後減慢。​
  5. ease-in-out:動畫以較慢的速度開始,中間加快,然後再減慢。

動畫播放方向:animation-direction

animation-direction 控制動畫的播放方向,以下是常用的值:

  1. normal:動畫按正常順序播放(預設值)。​
  2. reverse:動畫按相反順序播放。​
  3. alternate:動畫先按正常順序播放,然後反向播放,交替進行。​
  4. alternate-reverse:動畫先反向播放,然後按正常順序播放,交替進行。

動畫前後樣式:animation-fill-mode

animation-fill-mode 定義動畫開始前和結束後的元素樣式,以下是常用的值:

  1. none:​動畫執行前後,元素樣式不受影響(預設值)。
  2. forwards:​動畫結束後,元素保留最後一個關鍵幀的樣式。​
  3. backwards:​動畫開始前,元素應用第一個關鍵幀的樣式。
  4. both:​元素在動畫開始前應用第一個關鍵幀的樣式,動畫結束後保留最後一個關鍵幀的樣式。

結語

透過理解和運用 CSS 動畫的各項屬性,我們可以為網頁添加各種動態效果,但要注意,動畫雖然好看,不代表越多越好,動畫應該是輔助資訊呈現、提升使用體驗的。

avatar-img
梧笙の領域展開
65會員
37內容數
「梧笙」即「吾生」,意即我的生命,朋友都叫我「阿梧(Awu)」,高雄人。我喜歡學習新技能,從程式設計到網路工具,再到社群經營和影片剪輯。日常興趣是打遊戲、看動漫、讀小說和聽音樂。我會把這些興趣寫成文章,如果你有任何想法或問題,歡迎來信到我的郵箱 aowulife109@gmail.com
留言
avatar-img
留言分享你的想法!
梧笙の領域展開 的其他內容
迴圈(Loop)是一個非常重要的基礎觀念。迴圈讓我們可以重複執行某段程式碼,直到達到我們設定的條件為止。本文將介紹 JavaScript 中常見的三種迴圈:for 迴圈、while 迴圈,以及 do...while 迴圈,讓你理解它們的使用方式與差異。
當我們學習 JavaScript 時,「條件判斷」是不可或缺的基礎概念。它讓程式能根據不同情況,執行不同的指令。本文將會介紹 if else 和 switch case 這兩種常見的條件判斷,並說明它們的結構與使用時機。
當你剛開始學習 JavaScript 時,運算子和數學函數是不可或缺的基礎。這些工具讓你能夠處理數字、執行計算,甚至在程式邏輯中做出判斷。本文將介紹 JavaScript 常見的運算子與數學函數。
迴圈(Loop)是一個非常重要的基礎觀念。迴圈讓我們可以重複執行某段程式碼,直到達到我們設定的條件為止。本文將介紹 JavaScript 中常見的三種迴圈:for 迴圈、while 迴圈,以及 do...while 迴圈,讓你理解它們的使用方式與差異。
當我們學習 JavaScript 時,「條件判斷」是不可或缺的基礎概念。它讓程式能根據不同情況,執行不同的指令。本文將會介紹 if else 和 switch case 這兩種常見的條件判斷,並說明它們的結構與使用時機。
當你剛開始學習 JavaScript 時,運算子和數學函數是不可或缺的基礎。這些工具讓你能夠處理數字、執行計算,甚至在程式邏輯中做出判斷。本文將介紹 JavaScript 常見的運算子與數學函數。