前言
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
的基本語法與進階應用後,可以靈活運用於各種互動效果,如按鈕動畫、圖片過渡、淡入淡出等,讓網頁更加吸引人。