兄弟选择符(E~F)

语法:

E~F { sRules }

说明:

选择E元素后面的所有兄弟元素F,元素E与F必须同属一个父级。
  • 需要注意的是,选择的只是同级的元素F,后代中的元素F不会被选择。

    只作用于同级元素

    <style> h3 ~ p { color: #f00; } </style> <h3>这是一个标题</h3> <p>p1</p> <div> <p>p2</p> <p>p3</p> </div>

    这个例子中,只有 p1 会被选中;p2/p3 由于与 h3 并不是同级,所以不会被选中;

  • 只选择E元素之后的元素F,出现在E元素之前的元素F,不会被选择到。

    只作用于同级元素

    <style> h3 ~ p { color: #f00; } </style> <p>p0</p> <h3>这是一个标题</h3> <p>p1</p> <p>p2</p> <p>p3</p>

    这个例子中,p1/p2/p3 都会被选中;而 p0 因为在 h3 之前,所以不会被选中;

  • 相邻选择符(E+F) 不同的是,兄弟选择符会命中所有符合条件的兄弟元素,而不强制是紧邻的元素。

    E~F VS. E+F:

    <style> /* 相邻选择符(E+F) */ h3 + p { color: #f00; } /* 兄弟选择符(E~F) */ h3 ~ p { color: #f00; } </style> <h3>这是一个标题</h3> <p>p1</p> <p>p2</p> <p>p3</p>

    这个例子中,如果是相邻选择符,那么只有 p1 会变成红色;如果是兄弟选择符,那么 p1/p2/p3 都会变成红色;

兼容性:

  • 浅绿 = 支持
  • 红色 = 不支持
  • 粉色 = 部分支持
IE Firefox Chrome Safari Opera iOS Safari Android Browser Android Chrome
6.0 2.0+ 4.0+ 3.1+ 3.5+ 3.2+ 2.1+ #1 18.0+
7.0+
  1. Android Browser4.2.*及以下,伪元素:checked与该选择符一起使用会有一个bug,

示例: