Skip to content

CSS 直屬後代選取器 >:只選第一層子元素

CSS 直屬後代選取器:只選取第一層子元素

使用方式與 後代選取器 相似,在特定父層與子層元素中間使用 > 進行區隔,即可選取 HTML 文件上特定父層元素的 下一層元素

以下案例便是利用 直屬後代選取器 將對象選取出來並進行樣式的改變。

小提醒

由於 > 是選取子元素,位於下一層之後的元素便不會再進行選取了。也就是說 <div> 內的 <p> 並不是這次的選取對象。

對照範例

html
<div class="box">
  <p>我是第一層</p>
  <div>
    <p>我是第二層</p>
  </div>
</div>
css
.box > p { color: red; }   /* 只有第一層變紅 */
.box p   { color: red; }   /* 兩層都變紅 */

最常見的用途

多層選單只想改最外層時,> 是唯一乾淨的作法:

css
/* 只有第一層選單項目加分隔線 */
.menu > li {
  border-bottom: 1px solid #eee;
}

小提醒

由於 > 是選取子元素,位於下一層之後的元素便不會再進行選取了。也就是說 <div> 內的 <p> 並不是這次的選取對象。

常見問題

什麼情況一定要用直屬後代?

巢狀結構中只想改最外層的時候。像多層選單、巢狀 清單、樹狀結構,用空白會把每一層都改到,只有 > 能限制在第一層。

大於符號前後要不要空白?

兩種寫法都合法,加空白可讀性較好,多數格式化工具也會自動補上。

可以連續使用多個大於符號嗎?

可以,代表逐層往下。不過層數一多就與結構綁死了,通常改用 類別 會更好維護。

延伸閱讀