CSS 基礎系列 2 - CSS 選擇器
- November 30, 2022
深入探索 CSS 的基本選擇器,從 Type、Class、ID 到 Attribute 選擇器,並詳細介紹組合選擇器如後代、子元素和兄弟選擇器的使用方法。文章還涉及了尚在實驗階段的 Column combinator。完整指南幫助開發者更有效地選擇和樣式化元素。
Basic Selector Type 基本選擇器
Type selector (標籤)
使用 element 的 node name 來選擇所有的 html element,例如 p
可以選擇所有 <p></p>
的 element。
Class selector (類別)
使用 class 來選擇所有的符合的 element,在類別選擇器中需要加上 .
的前綴,如 .card
就會選擇所有 class="card"
的 element。
ID selector
使用 id 來選擇所有的符合的 element,在 id 選擇器中需要加上 #
的前綴,如 #app
就會選擇 id="app"
的 element,而通常 id
是獨一無二的。
Attribute selector (屬性)
選取屬性符合的 element,在 Attribute 選擇器中需要用 []
包覆起來,如 [type="submit"]
就會選擇屬性中 type="submit"
的元素,另外這個選擇器有很多進階的用法,如用超連結的前綴判斷,更多可以參考 MDN Attribute。
Combinator 組合選擇器
Descendant combinator (後代)
使用空格來選擇後代,如 div p
就會選擇所有 <div>
內的 <p>
。
<div>
<!-- 所有p都會被選到 -->
<p>Descendant</p>
<div>
<p>Descendant</p>
</div>
</div>
Child combinator (子)
使用 >
來選擇子元素,如 div > p
只會選擇第一層(子元素)而不是所有後代。
<div>
<!-- Child 會選到 -->
<p>Child</p>
<div>
<!-- 這個不是 Child -->
<p>Descendant</p>
</div>
</div>
Sibling combinator (兄弟)
使用 ~
來選擇兄弟,如 p ~ span
,兄弟不一定要緊鄰,只要同一層即可。
<!-- 這個不會選到 -->
<span>This is not select</span>
<p>some text</p>
<!-- 會選到這個 span -->
<span>sibling</span>
<br />
<div>something</div>
<!-- 會選到這個 span -->
<span>sibling</span>
Adjacent sibling combinator (緊鄰兄弟)
使用 +
來選擇緊鄰的兄弟, 如 p + span
,就會選擇緊靠著 p
後的 span
, Tailwind CSS 的 Divider 就是使用 * + *
來達成的。
Column Combinator
Column combinator
比較特殊,通常用來選擇表格的同一列,因為還在 Experimental 階段,要謹慎使用。