iT邦幫忙

2025 iThome 鐵人賽

DAY 6
0

學習目標

  • 熟悉元素、類別、ID、群組、子元素、後代等選擇器
  • 了解常見偽類(:hover, :focus, :nth-child())的使用
  • 建立選擇器優先度與覆寫的正確觀念
  • 能透過小實驗區分子元素與後代元素的差異

重點觀念(先選對,再寫對)

  • 選對元素是第一步:大部分 CSS 問題並不是屬性寫錯,而是沒選到正確的元素。
  • 結構清楚,樣式才穩:HTML 架構越乾淨,CSS 越能精準命中。
  • 優先度 ≠ 出現順序:不同選擇器有不同權重,#id > .class > tag
  • 避免過度巢狀:class 應是主要工具,避免長串選擇器綁死結構。

選擇器示範

<!DOCTYPE html>
<html lang="zh-Hant">
<head>
  <meta charset="UTF-8">
  <title>Day 6 - 選擇器示範</title>
  <style>
    p { color: blue; }              /* 元素 */
    .highlight { background: yellow; } /* 類別 */
    #title { font-size: 24px; }     /* ID */
    div p { color: red; }           /* 後代 */
    div > p { color: green; }       /* 子元素 */
    h1, h2, h3 { font-weight: bold; } /* 群組 */
    a:hover { color: orange; }      /* 偽類 */
    li:nth-child(2) { text-decoration: underline; }
  </style>
</head>
<body>
  <h1 id="title">CSS 選擇器 Demo</h1>

  <p>這是元素選擇器:文字藍色。</p>
  <p class="highlight">這是類別選擇器:背景黃色。</p>

  <div>
    <p>我是 div 的子元素(綠色)。</p>
    <section>
      <p>我是 div 的後代元素(紅色)。</p>
    </section>
  </div>

  <h2>互動測試</h2>
  <a href="#">滑過看看 hover 效果</a>
  <ul>
    <li>第一項</li>
    <li>第二項(nth-child 命中)</li>
    <li>第三項</li>
  </ul>
</body>
</html>

常見錯誤與修正

  • ❌ 只用 ID 疊樣式 → ✅ 以 class 為主,ID 僅限唯一元素
  • ❌ 追求長串選擇器 → ✅ 保持簡短、清楚,可維護性更高
  • ❌ 靠順序覆蓋 → ✅ 學會看 specificity(優先度規則)
  • ❌ 濫用 !important → ✅ 改以合理結構與命名來解決衝突

今日小挑戰(可交付)

  • [ ] 比較 div pdiv > p 的差異
  • [ ] 為超連結加上 :hover 效果
  • [ ] 在輸入框加入 :focus 樣式
  • [ ] 嘗試 :nth-child() 製作條紋清單
  • [ ] 重構舊頁面,改用語意化 class 命名

DAY6 心得

今天我深刻體會到 CSS 選擇器就像魔法陣,一旦畫錯就會完全沒效果。以前我常常搞混子元素與後代元素,結果要不是樣式沒套上,就是整個版面被波及。透過實際測試 div pdiv > p,我終於理解這兩者在結構上的差別,之後就能更精準控制影響範圍。

偽類的部分讓我覺得 CSS 不再只是靜態樣式,而是能增加互動的小驚喜。例如 :hover 的變色、:focus 的框線,都能讓使用者操作時更有回饋感。這也提醒我,寫程式不只是給電腦看,更是為了使用者的體驗。

雖然今天的重點看似基礎,但我覺得這些觀念是往後學習 Flex、Grid 或動畫的基石。就像健身要先把核心練穩,選擇器就是我在前端裡的核心肌群。每天累積一點,真的能感覺到自己越來越熟悉前端的語言。


上一篇
Day 5 - 頁面架構拼起來 🧩
下一篇
# Day 7 - 超連結與圖片的魔法
系列文
程式煉金術:Bug退散!前端驅魔記8
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言