“〜”(チルダ/波線/回転)CSSセレクターはどういう意味ですか?


858

~文字の検索は簡単ではありません。私はいくつかのCSSを調べていて、これを見つけました

.check:checked ~ .content {
}

どういう意味ですか?


3
チェックデモあなたが理解するだろう。ここに CSSセレクタのリストがある
Dipak

@TylerH、それはスタックオーバーフローの投稿で非常に一般的に使用されるものです。気を付けてください。私はそれを悪化させることを意図していませんでした。
Arsen Khachaturyan

@ArsenKhachaturyan多分あなたは誤解しています。ブロック引用構文は、ユーザーが何か(テキスト、画像、コードなど)を自分の作品や単語ではなく、他の場所からコピーしていることを示す引用を示すためのものです。すべてのフォーマットと同様に、これには意味上の目的があります。追加するものではありません。同様に、単語にランダムな太字の強調表示を追加しないでください。強調のために控えめに使用する必要があります。
TylerH

@TylerH名前は「引用」であり、「引用」自体の意味も理解しています。しかし、質問を通常のテキストと本当に区別したいときは、私が行ったような強調テクニックを試すことができます。太字の場合は、キーワードやよく知られた用語などを強調したいときにも使用できます。私は通常、人々が未知の理由で太字を使用するのは好きではありませんが、トピック関連の情報を簡単に見つけるために使用されることがあります。
Arsen Khachaturyan

@ArsenKhachaturyanしないでください。>用でのみ、引用符、それはありません、決して他の目的に使用されます。また、ランダムなテクノロジの名前を太字にしないでください。タグを使用して、関連するテクノロジーを確認できます。
貧弱

回答:


1371

~セレクタは、実際には一般的な兄弟コンビネータ(中その後、兄弟コンビネータに改名セレクタレベル4):

一般的な兄弟コンビネータは、単純なセレクタの2つのシーケンスを区切る「チルダ」(U + 007E、〜)文字で構成されています。2つのシーケンスで表される要素は、ドキュメントツリーで同じ親を共有し、最初のシーケンスで表される要素は、2番目のシーケンスで表される要素の前に(必ずしもすぐにではなく)あります。

次の例を考えてみます。

.a ~ .b {
  background-color: powderblue;
}
<ul>
  <li class="b">1st</li>
  <li class="a">2nd</li>
  <li>3rd</li>
  <li class="b">4th</li>
  <li class="b">5th</li>
</ul>

.a ~ .b 次の理由により、4番目と5番目のリスト項目に一致します。

  • ある.b要素は、
  • の兄弟です .a
  • .aHTMLソース順で後に表示されます。

同様に、兄弟でその後ろに表示される.check:checked ~ .contentすべての.content要素に一致します.check:checked


13
「必ずしもすぐにではない」が、この説明の重要な部分です。
PanicBus 2017

1
同じ親を持つすべての要素のセレクターもありますか?
Nick N.

1
@NickN。つまり.parent > *
Salman A

@SalmanA正確ではありませんが、親がわからない場合に使用できるセレクターがあることを望んでいました。
Nick N.

7
@ NickN.Noありません。CSSは、CSSパーサーがDOMを調べて一致することは決してないという命題で作成されています。これは、親セレクターがないのと同じ理由です。
yunzen 2017

191

家族の他のコンビネーターをチェックして、この特定のコンビネーターに戻るのも良いでしょう。

  • ul li
  • ul > li
  • ul + ul
  • ul ~ ul

チェックリストの例:

  • ul li- 内部を見る -の内部(どこでも)に配置されたすべてli要素を選択しulます。子孫セレクター
  • ul > li- 内部を見る - の直接の li要素のみを選択しulます。それが唯一の直接の子を選択します。すなわちliのをul子供セレクタ子供コンビネータセレクタ
  • ul + ul- 外を見る - ul直後を選択ulます。それは内側を見るのではなく、すぐ後ろの要素を外側を見る。隣接する兄弟セレクタ
  • ul ~ ul- 外を見る - ulに続くすべてを選択します。ul場所は関係ありませんが、両方ulが同じ親を持つ必要があります。一般的な兄弟セレクター

ここで見ているのはGeneral Sibling Selectorです


2
これが一番理にかなっています。再び救助への素人の用語。これで技術文書を読むことができます。
TheRealChx101

2
後続の兄弟だけでなく、すべての兄弟の兄弟セレクターはありますか?
エリヤモック

1
@EliTheHuman、いいえ。詳細については、このSO投稿を参照してください-stackoverflow.com/a/11813469/6830901
Lijo Joseph

174

一般的な兄弟コンビネーター

一般的な兄弟コンビネーターセレクターは、隣接する兄弟コンビネーターセレクターとよく似ています。違いは、選択される要素が最初の要素の直後に続く必要はなく、その後のどこにでも出現できることです。

より詳しい情報


31

これはGeneral sibling combinator、@サラマンの回答で非常によく説明されています。

私が見逃したのは、Adjacent sibling combinatorであり+、と密接に関連してい~ます。

例は

.a + .b {
  background-color: #ff0000;
}

<ul>
  <li class="a">1st</li>
  <li class="b">2nd</li>
  <li>3rd</li>
  <li class="b">4th</li>
  <li class="a">5th</li>
</ul>
  • 一致する要素 .b
  • に隣接しています .a
  • .aHTMLの後

上記の例ではli、4番目ではなく2番目をマークします。

   .a + .b {
     background-color: #ff0000;
   }
<ul>
  <li class="a">1st</li>
  <li class="b">2nd</li>
  <li>3rd</li>
  <li class="b">4th</li>
  <li class="a">5th</li>
</ul>

JSFiddle


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.