docs.rodeo

MDN Web Docs mirror

Subsequent-sibling combinator

{{CSSRef}} 

The subsequent-sibling combinator (~, a tilde) separates two selectors and matches all instances of the second element that follow the first element (not necessarily immediately) and share the same parent element.

In the following example, the subsequent-sibling combinator (~) helps to select and style paragraphs that are both siblings of an image and appear after any image.

img ~ p {
  color: red;
}

Syntax

/* The white space around the ~ combinator is optional but recommended. */
former_element ~ target_element { style properties }

Examples

Using the combinator with simple selectors

This example shows the use of the ~ combinator when both the selectors are simple selectors (p and span).

<article>
  <span>This is not red because it appears before any paragraph.</span>
  <p>Here is a paragraph.</p>
  <code>Here is some code.</code>
  <span>
    This span is red because it appears after the paragraph, even though there
    are other nodes in between.
  </span>
  <p>Whatever it may be, keep smiling.</p>
  <h1>Dream big</h1>
  <span>
    Doesn't matter how many or what kind of nodes are in between, all spans from
    the same parent after a paragraph are red.
  </span>
</article>
<span>
  This span is not red because it doesn't share a parent with a paragraph.
</span>
p ~ span {
  color: red;
}

{{EmbedLiveSample("Using the combinator with simple selectors", "auto", 300)}} 

Using the combinator with complex selectors

This example contains two complex selectors, both using the subsequent-sibling combinator: .foo p ~ span and .foo p ~ .foo span.

The example below shows that the target element in the complex selector must share the same parent as the initial element in the complex selector.

<h1>Dream big</h1>
<span>And yet again this is a red span!</span>
<div class="foo">
  <p>Here is another paragraph.</p>
  <span>A blue span</span>
  <div class="foo">
    <span>A green span</span>
  </div>
</div>
.foo p ~ span {
  color: blue;
}

.foo p ~ .foo span {
  color: green;
}

{{EmbedLiveSample("Using the combinator with complex selectors", "auto", 200)}} 

In the above HTML, the two siblings of .foo p are span and .foo. The green span is a descendant of the .foo class, which is a sibling of p.

Specifications

{{Specifications}} 

Browser compatibility

{{Compat}} 

See also

In this article

View on MDN