通用兄弟选择器

通用兄弟选择器(General Sibling Selector)是CSS中的一种组合选择器,它通过元素之间的兄弟关系来选择元素。与相邻兄弟选择器不同,通用兄弟选择器会选择所有在指定元素后面的兄弟元素。

基本语法

通用兄弟选择器的语法是使用~符号分隔两个选择器:

css
prev ~ siblings {
  property: value;
}

其中,prev是前面的元素选择器,siblings是在后面的所有兄弟元素选择器。

工作原理

通用兄弟选择器会匹配所有在prev元素后面的 siblings元素,且这些元素必须有相同的父元素。也就是说,只要元素B在元素A后面,并且它们有相同的父元素,通用兄弟选择器A ~ B就会匹配元素B,无论它们之间是否有其他元素。

使用示例

示例1:选择在h1后面的所有p元素

html
<h1>标题</h1>
<p>这是h1后面的第一个段落</p>
<div>这是一个div</div>
<p>这是h1后面的第二个段落</p>
css
h1 ~ p {
  color: blue;
  font-size: 16px;
}

这段CSS会选择所有在h1元素后面的p元素。在上面的HTML中,两个p元素都会被选中,即使它们之间有一个div元素。

示例2:为表单元素设置样式

html
<form>
  <input type="checkbox" id="agree">
  <label for="agree">我同意条款</label>
  <br>
  <input type="submit" value="提交" disabled>
</form>
css
#agree:checked ~ input[type="submit"] {
  background-color: #4CAF50;
  color: white;
  cursor: pointer;
  disabled: false;
}

这段CSS会选择所有在选中的agree复选框后面的提交按钮,并为它们设置样式。当复选框被选中时,提交按钮会变为可点击状态并改变样式。

示例3:创建响应式布局

html
<input type="checkbox" id="toggle-menu">
<label for="toggle-menu">菜单</label>
<nav>
  <ul>
    <li>首页</li>
    <li>关于我们</li>
    <li>产品</li>
    <li>联系我们</li>
  </ul>
</nav>
css
nav {
  display: none;
}

#toggle-menu:checked ~ nav {
  display: block;
}

这段CSS会隐藏导航菜单,当用户点击菜单按钮(切换复选框状态)时,显示导航菜单。这是一种常见的移动端导航实现方式。

特点

  1. 兄弟关系:选择所有在前面元素后面的兄弟元素
  2. 相同父元素:所有元素必须有相同的父元素
  3. 中优先级:在CSS选择器优先级中,通用兄弟选择器的优先级与类选择器相同
  4. 灵活组合:可以与其他选择器结合使用,特别是与伪类选择器结合

注意事项

  1. 顺序重要:通用兄弟选择器的顺序是固定的,prev ~ siblings不能写成 siblings ~ prev
  2. 兄弟关系:元素必须是兄弟关系(有相同的父元素)
  3. 前面后面:只选择在前面元素后面的兄弟元素,不选择前面的
  4. 浏览器兼容性:通用兄弟选择器在IE6及以下版本的浏览器中不支持

浏览器兼容性

浏览器 版本 支持情况
Chrome 1+
Firefox 1+
Safari 3+
Edge 12+
IE 7+
IE6及以下 -

相关资源

学习建议

通用兄弟选择器是CSS中有用的组合选择器之一,它可以用于创建各种交互效果,如表单验证、响应式导航等。建议初学者理解通用兄弟选择器与相邻兄弟选择器的区别,并在需要选择所有在特定元素后面的兄弟元素时使用它。

最后更新:2026-02-07