到目前為止,我們已經會用 HTML 與 CSS 做出結構與排版,也能用 RWD 讓網頁在不同裝置下呈現。
但一個「漂亮」的網頁,還需要一點點 互動與動態效果,這就是今天的主角 —— CSS 動畫。
Transition 可以讓元素在屬性改變時,產生「漸進效果」。
常用於 hover 效果、按鈕點擊、顏色改變。
transition: [屬性] [持續時間] [緩動效果] [延遲時間];
<!DOCTYPE html>
<html lang="zh-Hant">
<head>
<meta charset="UTF-8">
<title>Transition 範例</title>
<style>
.btn {
background: #2196F3;
color: white;
padding: 12px 20px;
border: none;
border-radius: 6px;
cursor: pointer;
transition: background 0.3s ease, transform 0.3s ease;
}
.btn:hover {
background: #1976D2;
transform: scale(1.05);
}
</style>
</head>
<body>
<button class="btn">滑過我</button>
</body>
</html>
👉 滑鼠移過去時,顏色會漸變,按鈕也會微微放大。
Animation 可以讓元素透過「關鍵影格 (keyframes)」控制更複雜的動畫,甚至能無限循環。
@keyframes 動畫名稱 {
0% { 屬性: 值; }
50% { 屬性: 值; }
100% { 屬性: 值; }
}
.element {
animation: 動畫名稱 持續時間 緩動效果 延遲 次數 方向 填充模式;
}
常用參數:
infinite
→ 無限循環alternate
→ 來回播放forwards
→ 保持在最後一格狀態<!DOCTYPE html>
<html lang="zh-Hant">
<head>
<meta charset="UTF-8">
<title>Animation 範例</title>
<style>
.box {
width: 100px;
height: 100px;
background: #E91E63;
position: relative;
animation: bounce 2s ease-in-out infinite alternate;
}
@keyframes bounce {
0% { top: 0; }
100% { top: 200px; }
}
</style>
</head>
<body>
<div class="box"></div>
</body>
</html>
👉 這個方塊會上下跳動,模擬「彈跳」的效果。
@keyframes fadeInOut {
0%, 100% { opacity: 0; }
50% { opacity: 1; }
}
.fade {
animation: fadeInOut 3s ease-in-out infinite;
}
套在元素上就能產生淡入淡出的效果,非常適合提示訊息或 Loading 動畫。
特性→Transition/Animation
✅ 適合用 Transition 做簡單互動(hover、按鈕點擊)。
✅ 複雜動畫則用 Animation(淡入淡出、跑馬燈、Loading)。
✅ 避免過度使用,太多動畫會影響效能與使用者體驗。
✅ 行動裝置特別要注意效能,盡量用 transform
和 opacity
,少用 top / left
。
今天玩 CSS 動畫的時候,我覺得最神奇的地方是,很多以前需要 JavaScript 才能做到的效果,現在只要用 CSS 就能實現!
像是 hover 放大、淡入淡出、彈跳動畫,甚至 跑馬燈 都能用 CSS 完成。
這不但讓程式碼更乾淨,也減少了效能負擔。
👉 明天 Day 7,我們要進入 JavaScript 基礎:變數與資料型別,開始讓網頁動起來 🚀