私は以下のHTMLを持っています
<div class="section">
<div>header</div>
<div>
contents
<div>sub contents 1</div>
<div>sub contents 2</div>
</div>
</div>
そして、次のスタイル:
DIV.section DIV:first-child
{
...
}
何らかの理由で "sub contents 1"<div>
と "header"<div>
にスタイルが適用されていることが理解できないのですが。
スタイルのセレクターは "section"というクラスを持つdivの最初の直接の子にのみ適用されると思いました。欲しいものを手に入れるためにセレクタを変更するにはどうすればいいですか?
あなたが文字通りに投稿したのは、「セクションdivの内側にあり、それらの親の最初の子であるdivを見つける」という意味です。 subにはその説明に一致するタグが1つ含まれています。
あなたが主divの両方の子供が欲しいかどうかは私には不明です。もしそうなら、これを使用してください:
div.section > div
ヘッダだけが欲しい場合は、これを使います。
div.section > div:first-child
>
を使用すると、説明が「セクションdivの直接の子孫であるdivをすべて検索する」に変更されます。
IE6を除くすべての主要ブラウザがこの方法をサポートしています。 IE6のサポートがミッションクリティカルな場合は、代わりに子divにクラスを追加して使用する必要があります。そうでなければ、それは気にする価値はありません。
ルールは継承されるため、CSSはカスケーディングスタイルシートと呼ばれます。次のセレクタを使用すると、willは親の直接の子だけを選択しますが、その規則はinheritedbyになります。そのdiv
の子divs
:
div.section > div { color: red }
さて、そのdiv
との子は両方ともred
になります。継承したくない場合は、親に設定したものをすべてキャンセルする必要があります。
div.section > div { color: red }
div.section > div div { color: black }
div.section
の直接の子であるそのdiv
だけが赤になりますが、その子divs
はまだ黒になります。
この質問はGoogleで検索しました。これは、子がどんな型であるかにかかわらず、クラスcontainer
を持つ要素の最初の子を返します。
.container > *:first-child
{
}
div.section > div
div.section > div
を使用してください。
さらに良いことには、CSSで見出しと<h1>
にdiv.section h1
タグを使用して、古いブラウザ(>
について知らない)をサポートするようにし、マークアップの意味を維持します。
あなたの場合の直接の最初の子のCSSセレクターは次のとおりです。
.section > :first-child
直接セレクターは>で、最初の子セレクターは:first-childです
他の人が示唆するように、:の前にアスタリスクは必要ありません。タグを前に付けてこのソリューションを変更することにより、DOM検索を高速化できます。
div.section > :first-child