相鄰兄弟選擇器(Adjacent sibling combinator),用 +
表示,用於選擇緊接在指定元素後的第一個兄弟元素。 它要求兩個元素擁有相同的父元素,並且第二個元素必須緊跟在第一個元素之後,中間不能有任何其他元素,即使是空格或換行符也不行。
以下是一些例子:
1. 選中緊跟在 h2 元素後的第一個 p 元素:
<h2>標題</h2>
<p>段落1</p>
<p>段落2</p>
<div>其他內容</div>
<p>段落3</p>
<style>
h2 + p {
color: red;
}
</style>
在這個例子中,只有“段落1”會變成紅色。 “段落2” 和 “段落3” 不會受到影響,因為它們都不是緊跟在 h2
後的第一個兄弟元素。“段落2”雖然是h2
的兄弟元素,但它前面有“段落1”隔著。“段落3”前面有div
隔著.
2. 列表樣式修改:
<ul>
<li>專案1</li>
<li>專案2</li>
<li>專案3</li>
</ul>
<style>
li + li {
margin-top: 10px; /* 為除了第一個列表項之外的所有列表項新增頂部邊距 */
}
</style>
這裡,只有“專案2”和“專案3”會有頂部外邊距。 “專案1” 不會有,因為它前面沒有兄弟元素。 這可以用來實現列表項之間的間距,而不會影響第一個列表項。
3. 表單樣式調整:
<form>
<label for="username">使用者名稱:</label>
<input type="text" id="username">
<label for="password">密碼:</label>
<input type="password" id="password">
</form>
<style>
label + input {
margin-left: 5px; /* 為每個輸入框新增左邊距,使其與標籤稍微分開 */
}
</style>
這個例子中,兩個 input
元素都會獲得左邊距,因為它們都緊跟在一個 label
元素之後。
4. 無效選擇器示例:
<div>
<h2>標題</h2>
<p>段落1</p>
</div>
<p>段落2</p>
<style>
h2 + p {
color: red;
}
</style>
這裡,只有div
內的“段落1”會變成紅色。“段落2”不會變紅,因為它和h2
雖然都是div
的兄弟元素,但它們並不在同一個父元素下。h2
的父元素是div
,而p
的父元素是body
。
總結: 相鄰兄弟選擇器 +
必須滿足兩個條件:
- 相同的父元素: 兩個元素必須是兄弟元素,即擁有相同的父元素。
- 緊鄰: 第二個元素必須緊跟在第一個元素之後,中間不能有任何其他元素 (包括文字節點, 註釋等)。
希望以上例子能夠幫助你理解相鄰兄弟選擇器的用法。