Skip to content

CSS 轉場與動畫:transition 與 animation 的差別

CSS 轉場與動畫介紹:兩者的差別

CSS 轉場與動畫提供了簡單、有效的方式,讓網頁元素具備動態效果,提升使用者體驗與視覺吸引力。透過理解 transitionanimationkeyframes 等技巧,開發者可以創造更自然且效能優化的互動體驗。

轉場

讓樣式的變化不要瞬間發生,而是以 漸變 的方式呈現,例如:滑鼠移到按鈕上,顏色會慢慢變深。它必須由狀態改變來觸發,只有起點與終點兩個狀態。

屬性說明
transition-property指定哪些屬性要過渡。
transition-duration過渡花費的時間。
transition-timing-function速度曲線。
transition-delay延遲多久才開始。

詳細用法請見 轉場

動畫

先用 @keyframes 定義好幾個關鍵影格,元素就會自動依序播放,例如:方塊自動從左移到右。它不需要狀態改變來觸發,也可以重複循環。

屬性說明
@keyframes定義關鍵影格。
animation-nameanimation-duration指定要播哪一組影格、播多久。
animation-iteration-count播放次數,可設為 infinite
animation-direction播放方向,可以來回播。
animation-fill-mode播完之後停在哪一格。
animation-play-state暫停與繼續。

詳細用法請見 動畫

兩者的差別

比較項目轉場 transition動畫 animation
觸發方式狀態改變時載入後自動播放
中間狀態只有起點與終點可設多個關鍵影格
重複播放可無限循環
適合的情境滑入變色、展開收合載入動畫、輪播、脈動效果

效能與無障礙

css
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    transition-duration: 0.01ms !important;
  }
}

動畫請優先改變 transform 與透明度,它們交由合成層處理,不會觸發重新排版。另外務必尊重使用者關閉動態效果的系統設定。

常見問題

transition 和 animation 該用哪一個?

由狀態改變觸發、只有起點與終點兩個狀態的,用 transition,例如:滑入變色。需要自動播放、多段變化或重複循環的,用 animation

哪些屬性做動畫比較順?

位移、縮放與透明度最順,因為它們交由合成層處理。改寬高、位置或內距會觸發重新排版,畫面容易卡頓。

要不要考慮不想看到動畫的使用者?

要。系統層級有降低動態效果的設定,可以用 prefers-reduced-motion 偵測,在該情境下縮短或關閉動畫,這是無障礙的基本要求。

延伸閱讀