このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docsコミュニティーについてもっと知り、仲間になるにはこちらから。
後続兄弟結合子
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2015年7月.
後続兄弟結合子 (subsequent-sibling combinator,~) は 2 個のセレクターを結びつけ、 1 つ目の要素の後に 2 つ目の要素があり(直後である必要はない)、かつ両者が同じ親要素の子であるすべてのパターンに一致します。
次の例では、後続兄弟結合子 (~) は、画像の兄弟であり、画像の後に現れる段落を選択し、スタイル設定するのに便利です。
css
img ~ p { color: red;}In this article
構文
css
/* 結合子の前後の空白はオプションですが、推奨されます。 */先行する要素 ~ 選択される要素 { スタイルプロパティ }例
>単純セレクターと結合子の使用
この例では、両方のセレクターが単純セレクター(p とspan)である場合に、~ 結合子を使用する場合を示しています。
html
<article> <span>これは段落の前に現れるので赤にはなりません。</span> <p>ここに段落があります。</p> <code>ここに code があります。</code> <span> この span が赤いのは、間に他のノードがあるにもかかわらず、段落の後に現れるからです。 </span> <p>何かあっても、笑顔を絶やさないでください。</p> <h1>夢は大きく</h1> <span> ノードの数や種類に関係なく、段落の後の同じ親からの span はすべて赤くなります。 </span></article><span> この span は段落と親を共有していないので赤ではありません。</span>css
p ~ span { color: red;}複合セレクターによる結合子の使用
この例には2つの複合セレクターがあり、どちらも後続兄弟結合子.foo p ~ span と.foo p ~ .foo span を使用しています。
- 最初の複合セレクターである
.foo p ~ spanは、もし span と段落の親が同じで、かつその親またはその親の祖先がクラス.fooを持っている場合、段落の後に来るすべての span に一致します。 - 2 つ目の複合セレクター
.foo p ~ .foo spanは、クラス.fooを持っている要素の子孫であるすべての span に一致します。
下記の例は、複合セレクターの対象要素は、複合セレクターの初期要素と同じ親を示さなければならないことを示しています。
html
<h1>夢は大きく</h1><span>またしても赤い span です!</span><div> <p>別の段落です。</p> <span>青い span</span> <div> <span>緑の span</span> </div></div>css
.foo p ~ span { color: blue;}.foo p ~ .foo span { color: green;}上の HTML では、.foo p の兄弟はspan と.foo です。緑色のspan は.foo クラスの子孫で、p の兄弟です。
- 対象セレクターが
spanの場合、pの兄弟であるspan要素が選択されます。p要素は.fooの子孫であるため、そのspan兄弟要素も選択されます。 .foo p ~ .foo spanでは、対象とするセレクターは.fooの子孫であるspanです。この場合、.fooの子孫であるspan要素は、その.fooがpの兄弟である場合に選択されます。基本的には、どちらも.fooの祖先に入れ子になっています。
仕様書
| Specification |
|---|
| Selectors Level 4> # general-sibling-combinators> |