在網頁設計中,動效能讓用戶交互更自然、流暢,提升使用體驗。本文將通過 CSS 的?transition
(過渡)和?transform
(變形)屬性,帶你入門基礎動效設計,結合案例演示如何實現顏色漸變、元素位移 / 旋轉 / 縮放,以及按鈕點擊動效。
一、動效入門:從?transition
?開始
1. 什么是 CSS 過渡?
transition
?用于定義元素屬性變化時的過渡效果,讓狀態切換(如 hover、focus)不再生硬。常見場景:鼠標懸停時按鈕顏色漸變、卡片展開收縮等。
2. 基礎語法與核心屬性
/* 單屬性過渡:hover 時背景色漸變 */
.button { background-color: blue; /* 語法:transition: 屬性名 過渡時間 函數 延遲時間 */ transition: background-color 0.3s ease;
}
.button:hover { background-color: green;
}
效果:鼠標懸停時按鈕背景色平滑漸變
transition-property
:指定過渡的 CSS 屬性(如?background-color
、width
?等),all
?表示所有屬性。transition-duration
:過渡持續時間(單位:s 或 ms,如?0.3s
)。transition-timing-function
:過渡曲線(ease
?緩和、linear
?勻速、ease-in
?加速等)。transition-delay
:過渡延遲時間(可選,如?0.1s
)。
3. 多屬性過渡與簡寫
/* 簡寫:同時過渡背景色、文字顏色和邊框半徑 */
.box { transition: all 0.5s ease-out 0.1s; /* 順序:屬性 時長 函數 延遲 */
}
.box:hover { background-color: #e0f3ff; color: #333;border-radius: 20px;
}
效果:鼠標懸停時盒子變色、變圓角、文字變深
二、transform
:讓元素 “動起來”
transform
?用于改變元素的形狀、位置或大小,支持平移(translate)、旋轉(rotate)、縮放(scale)等操作,且不會影響頁面布局。
1. 平移:translate()
/* 鼠標懸停時向右下方移動 10px */
.card { transform: translate(0, 0); /* 初始位置 */ transition: transform 0.3s ease;
}
.card:hover { transform: translate(10px, 10px); /* 水平/垂直位移 */box-shadow: 0 4px 8px rgba(0,0,0,0.2); /* 加深陰影 */
}
效果:鼠標懸停時卡片向右下方移動 10px,模擬 “懸浮感”
2. 旋轉:rotate()
/* 點擊時圖標旋轉 360°(需配合 JS 或偽類) */
.icon { display: inline-block; transition: transform 1s ease;
}
.icon.clicked { transform: rotate(360deg);
}
效果:順時針旋轉360°
- 單位:
deg
(度),正數順時針旋轉,負數逆時針。
3. 縮放:scale()
/* 懸停時元素放大 1.2 倍 */
.image { transform: scale(1); transition: transform 0.2s ease-in;
}
.image:hover {/* scaleX()/scaleY() 可單獨控制方向 */transform: scale(1.2); /* 放大1.2倍 */
}
效果:鼠標懸停時圖片放大 20%,模擬聚焦效果
4. 組合效果與原點調整
通過?transform-origin
?可修改元素變形的原點(默認中心):
.box { transform-origin: bottom left; /* 以左下角為原點旋轉 */ transform: rotate(45deg) scale(0.9); /* 同時旋轉45°和縮放0.9倍 */
}
效果:鼠標懸停時卡片以左下角為原點旋轉 45° 并縮小
三、合理使用動效:避免過度設計
- 性能優先:復雜動效可能影響性能,優先使用?
transform
?和?opacity
(這兩個屬性觸發 GPU 加速)。 - 克制原則:動效應服務于功能,如按鈕反饋、狀態提示,避免無意義的動畫干擾用戶。
- 兼容性:檢查瀏覽器支持(現代瀏覽器基本支持,IE 需前綴?
-webkit-
?等)。 - 可訪問性:為 motion-sensitive 用戶提供關閉動效的選項(通過媒體查詢?
prefers-reduced-motion
)。
總結
CSS 的?transition
?和?transform
?是實現輕量動效的利器,通過簡單代碼即可讓頁面元素 “活起來”。記住:動效應自然、克制,聚焦用戶體驗,而非單純炫技。從顏色漸變到元素變形,再到交互反饋,合理運用這些特性,就能打造出絲滑的網頁交互效果。