Комбинатор последующих сиблингов
Комбинатор последующих сиблингов (~, тильда) разделяет два селектора и соответствует всем экземплярам второго элемента, который следует за первым элементом (не обязательно непосредственно) и имеет тот же родительский элемент.
В следующем примере комбинатор последующих сиблингов (~) помогает выбрать и стилизовать абзацы, которые являются одновременно сиблингами изображения и появляются после любого изображения.
img ~ p {
color: red;
}
Синтаксис
/* The white space around the ~ combinator is optional but recommended. */
former_element ~ target_element { style properties }
Примеры
Использование комбинатора с простыми селекторами
В этом примере показано использование комбинатора ~ когда оба селектора являются простыми селекторами (p и 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;
}
Использование комбинатора со сложными селекторами
Этот пример содержит два сложных селектора, оба использующих комбинатор последующих сиблингов: .foo p ~ span и .foo p ~ .foo span.
- Первый сложный селектор,
.foo p ~ span, соответствует всем span-элементам, которые следуют за абзацем, если span и абзац имеют одного родителя и у этого родителя или его предка есть класс.foo. - Второй сложный селектор,
.foo p ~ .foo span, соответствует всем span-элементам, которые являются потомками элемента с классом.foo, если этот элемент является сиблингом вышеупомянутого абзаца.
Приведенный ниже пример показывает, что целевой элемент в сложном селекторе должен иметь того же родителя, что и начальный элемент в сложном селекторе.
<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;
}
В приведенном выше HTML-коде два сиблинга элемента .foo p являются span и .foo. Зеленый span является потомком класса .foo, который является сиблингом элемента p.
- Когда целевой селектор —
span, выбирается элементspan, который является сиблингомp. Элементpявляется потомком.foo, как и его сиблингиspan. - В
.foo p ~ .foo span, целевой селектор —span, который является потомком.foo. В этом случае элементspan, являющийся потомком.foo, выбирается, если этот.fooявляется сиблингомp; по сути, оба вложены в предка.foo.
Спецификации
| Спецификация |
|---|
| Selectors Level 4 # general-sibling-combinators |
Совместимость с браузерами
| Рабочие столы | Мобильные | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari на IOS | Samsung Internet | WebView Android | |
Subsequent-sibling_combinator |
1 | 12 | 1 | 9 | 3 | 18 | 4 | 14 | 1 | 1.0 | ≤37 |
См. также
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/Subsequent-sibling_combinator