General Sibling Selector (CSS selector)
Example
This selector matches all
p elements that are siblings to h2
elements:
h2~p {
⋮ declarations
}
Description
The general sibling selector is available in CSS3, and the combinator used in this selector is a tilde character (~).
The selector matches
elements that are siblings of a given element. This example will match a
p element if it’s a sibling of an h2
element:
h2~p {
⋮ declarations
}
The elements don’t have to be adjacent siblings, but they have
to have the same parent, and the h2 element has to
occur before the p element in the document source.
Let’s apply the above selector to some more examples:
<h2>Heading</h2> <p>The selector above matches this paragraph.</p> <p>The selector above matches this paragraph.</p>
Here,
both paragraphs match the sibling selector
h2~p, because the p elements
are siblings to the h2 element.
The paragraph below isn’t a sibling to the heading—they don’t have the same parent—so our selector won’t match this paragraph:
<h2>Heading</h2> <div> <p>The selector above does not match this paragraph.</p> </div>
Only the second paragraph above is matched by the
sibling selector h2~p—even though they’re
siblings—because the first p element occurs before the
h2 element:
<p>The selector above does not match this paragraph.</p> <h2>Heading</h2> <p>The selector above matches this paragraph.</p>
Compatibility
| IE | 5.5 | None |
|---|---|---|
| 6.0 | None | |
| 7.0 | Buggy | |
| Firefox | 1.0 | Full |
| 1.5 | Full | |
| 2.0 | Full | |
| Safari | 1.3 | None |
| 2.0 | None | |
| 3.0 | Full | |
| Opera | 9.2 | Full |
| 9.5 | Full |
In Internet Explorer 7, this selector fails if a comment appears between the combinator and the simple selector that follows it.
If one of the simple selectors is missing, Internet Explorer 7 acts as if there were a universal selector in its place, instead of failing as it should.
User-contributed notes
There are no comments yet.
Add a note
To post a note on this topic, please log in with your SitePoint username and password. If you don't have an account yet, you can create a new account for free.

