組合子
概述
| 選擇 | 描述 | 
|---|---|
| div span | 後代選擇器(所有 <span>s 都是<div>的後代) | 
| div > span | 兒童選擇器(所有 <span>s 是<div>的直接孩子) | 
| a ~ span | 一般兄弟姐妹選擇器(所有 <span>s 都是<a>之後的兄弟姐妹) | 
| a + span | 相鄰的兄弟姐妹選擇器(所有 <span>s,緊接在<a>之後) | 
注意: 同級選擇器將源文件中後面的元素作為目標。CSS 本質上(它的級聯)不能以前一個或父元素為目標。但是,使用 flex
order屬性,可以在可視媒體上模擬先前的兄弟選擇器 。
後裔組合:selector selector
由至少一個空格字元(      ) 表示的後代組合子選擇作為已定義元素的後代的元素。這個組合子選擇元素的所有後代(從子元素開始)。
div p {
  color:red;
}
<div>
  <p>My text is red</p>
  <section>
    <p>My text is red</p>
  </section>
</div>
<p>My text is not red</p>
在上面的例子中,選擇前兩個 <p> 元素,因為它們都是 <div> 的後代。
兒童組合:selector > selector
子(>)組合子用於選擇那些元件的兒童,或直系後代的指定元素。
div > p {
  color:red;
}
<div>
  <p>My text is red</p>
  <section>
    <p>My text is not red</p>
  </section>
</div>
上面的 CSS 僅選擇第一個 <p> 元素,因為它是直接來自 <div> 的唯一段落。
第二個 <p> 元素未被選中,因為它不是 <div> 的直接子元素。
相鄰的兄弟姐妹組合:selector + selector
相鄰的兄弟(+)組合子選擇緊跟在指定元素之後的兄弟元素。
p + p {
  color:red;
}
<p>My text is not red</p>
<p>My text is red</p>
<p>My text is red</p>
<hr>
<p>My text is not red</p>
上面的例子只選擇那些直接在另一個 <p> 元素之前的 <p> 元素。
General Sibling Combinator:selector ~ selector
一般兄弟(~)組合子選擇跟隨指定元素的所有兄弟姐妹。
p ~ p {
  color:red;
}
<p>My text is not red</p>
<p>My text is red</p>
<hr>
<h1>And now a title</h1>
<p>My text is red</p>
上面的例子選擇了另一個 <p> 元素之前的所有 <p> 元素,無論它們是否緊鄰。