iT邦幫忙

2024 iThome 鐵人賽

DAY 9
0

後代選擇器(Descendant Combinator)用於選擇特定元素中的所有子孫元素,無論是直接的子元素還是更深層次的後代。當你需要對一個範圍內的所有元素應用相同的樣式時,它非常實用。

你可以把它想像成一個大家族的聚會。如果你要找出爺爺的所有男性子孫來組成一支男子棒球隊,從大伯、爸爸、小叔、哥哥、弟弟到弟弟的兒子、弟弟兒子的兒子、弟弟兒子兒子的兒子…(太多了,夠了/images/emoticon/emoticon06.gif),無論他們是哪一代,全部都會被揪出來,沒有人能躲過這個「後代選擇器」!

基本用法

語法

選擇器1 選擇器2 選擇器3 … 選擇器n {
	屬性名: 屬性值;
}
  • 選擇器之間使用空格隔開,表示後面選擇器為前面選擇器的後代元素

範例

/* 選中所有 <ul> 元素內的 <li> 元素 */
ul li {
	color: red;
}

/* 選中所有 <ul> 元素內的 <li> 元素內的 <a> 元素 */
ul li a {
	color: gold;
}

/* 選中 class 為 "dog" 的元素內的 <li> 元素 */
.dog li {
	color: green;
}

/* 選中 class 為 "dog" 的元素內的 class 為 "cute" 的 <li> 元素 */
.dog li.cute {
	color: green;
}

# 實務應用:選單樣式

在設計選單樣式時,如果所有的子選單樣式都一樣,我們可以直接使用 .menu a 來選中 menu 元素裡的所有 <a> 元素。這種方式既簡潔又易於維護。

<ul class="menu">
  <li>
    <a href="/">關於我們</a>
  </li>
  <li>
    <a href="/">產品介紹</a>
  </li>
  <li>
    <a href="/">聯絡我們</a>
  </li>
</ul>
.menu a {
  color: #4D4D4D;
  text-decoration: none;
}

.menu a:hover {
  color: orange;
}

Descendant Combinator

當然,如果你希望明確指出樣式只應用於 <li> 內的 <a>,你也可以使用 .menu li a

.menu li a {
  color: #4D4D4D;
  text-decoration: none;
}

.menu li a:hover {
  color: orange;
}

但由於 <ul> 只能包含 <li> 元素,所以這種針對性在這個例子中並非必要。


# 總結

後代選擇器是一個強大的工具,可用來選取元素中的子孫元素。儘管它功能強大,但在實際使用中應該保持選擇器的簡潔性,避免過度複雜的選擇器組合,這樣可以提高代碼的可讀性和維護性。


上一篇
選擇器列表-多重選擇,一次完成!
下一篇
子代選擇器-鎖定直系血親,選擇不含糊
系列文
你的優先選擇是什麼?從 CSS 選擇器到優先級,深入解析與實用技巧12
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言