前言
CSS transition 屬性允許元素在狀態變化時產生平滑的動畫效果,使 UI 更加流暢和自然。這項技術通常應用於按鈕、圖片、卡片等 UI 元素的互動效果,如懸停、點擊或狀態變更。
1. transition 基礎概念
CSS transition 屬性用於定義當元素的某些 CSS 屬性發生變化時,該變化應如何逐漸呈現,而非立即改變。基本語法如下:
| transition: property duration timing-function delay; | 
- property:指定要應用過渡效果的 CSS 屬性。
- duration:設定過渡動畫的時間(如- 0.5s、- 200ms)。
- timing-function:定義動畫的速度曲線(如- ease、- linear)。
- delay:動畫開始前的延遲時間(可選,默認為- 0s)。
2. transition 常見應用
2.1 過渡單一屬性
| .button { | 
當滑鼠懸停在 .button 上時,背景顏色將在 0.3s 內從 blue 變為 darkblue。
2.2 過渡多個屬性
| .card { | 
當滑鼠懸停時,.card 的背景顏色會變深,並且整個卡片會放大 1.1 倍。
3. transition 進階應用
3.1 transition-timing-function(動畫速度曲線)
timing-function 用於定義動畫的速度變化方式,常見的值如下:
- linear:等速變化。
- ease(預設值):開始與結束較慢,中間較快。
- ease-in:開始較慢,之後加速。
- ease-out:開始較快,最後減速。
- ease-in-out:開始和結束都較慢。
範例:
| .box { | 
當滑鼠懸停時,.box 會平滑地向右移動 200px,並且動畫在開始和結束時較慢。
3.2 transition-delay(延遲時間)
可以設定 transition-delay 來延遲動畫的開始時間。
| .box { | 
當滑鼠懸停時,background-color 會延遲 1s 後才開始變化。
4. transition 實際應用範例
4.1 按鈕的點擊效果
| .button { | 
當按下 .button 時,按鈕會稍微縮小,產生按壓感。
4.2 漸變顯示效果
| .fade-box { | 
當 .show 類別被添加時,.fade-box 會在 1s 內逐漸顯示。
4.3 圖片放大效果
| .image-container img { | 
當滑鼠懸停時,圖片會平滑地放大。
5. transition vs animation
雖然 transition 和 animation 都能用來製作動畫,但它們的用途不同:
- **transition**:適合用於元素的狀態變更(如hover、focus)。
- **animation**:適用於更複雜的動畫,如連續循環的動畫。
如果需要更高級的動畫,例如無限重複、按時間順序變化的動畫,則應使用 @keyframes 和 animation。
6. 總結
CSS transition 是製作動畫效果最簡單且高效的方法之一。透過 transition,可以讓 UI 更加生動,使使用者體驗更流暢。掌握 transition 的基本語法與進階應用後,可以靈活運用於各種互動效果,如按鈕動畫、圖片過渡、淡入淡出等,讓網頁更加吸引人。