Skip to content

CSS 同層選取器 ~:選取其後的所有兄弟元素

CSS 同層選取器:選取其後所有兄弟元素

使用 ~ 區隔兩個元素,選取 HTML 文件上某個元素同層且位於其後的所有兄弟元素。

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

小提醒

同層選取器 只會選取目標元素後的兄弟元素,並不包含目標元素本身。

與鄰接同層的差別

html
<h2>標題</h2>
<p>第一段</p>
<p>第二段</p>
<p>第三段</p>
css
h2 ~ p { color: red; }   /* 三段都變紅 */
h2 + p { color: red; }   /* 只有第一段變紅 */

~ 一次影響後面所有兄弟,+ 只認緊接著的那一個,詳見 鄰接同層選取器

常見的互動寫法

搭配 偽類 可以做出不寫 JavaScript 的展開效果:

css
/* 核取方塊被勾選時,顯示它後面的內容區 */
.toggle:checked ~ .panel {
  display: block;
}

小提醒

同層選取器 只會選取目標元素後的兄弟元素,並不包含目標元素本身。

常見問題

同層和鄰接同層差在哪?

~ 選取其後的所有兄弟,+ 只選緊接著的下一個。要一次影響後面全部就用 ~

可以選到前面的兄弟元素嗎?

傳統選取器只能往後選。要往前影響,通常得調整 HTML 順序再用視覺順序反轉,或改用支援關聯選取的新語法。

它會選到目標元素自己嗎?

不會。同層選取器只挑符合條件的兄弟,目標元素本身不在選取範圍內。

延伸閱讀