Ich habe das folgende HTML
<div class="section">
<div>header</div>
<div>
contents
<div>sub contents 1</div>
<div>sub contents 2</div>
</div>
</div>
Und der folgende Stil:
DIV.section DIV:first-child
{
...
}
Aus irgendeinem Grund, den ich nicht verstehe, wird der Stil sowohl auf den "Unterinhalt 1" <div>
als auch auf den "Header" angewendet <div>
.
Ich dachte, dass der Selektor für den Stil nur für das erste direkte Kind eines Div mit einer Klasse namens "section" gelten würde. Wie kann ich den Selektor ändern, um das zu bekommen, was ich will?
html
css
css-selectors
Jeremy
quelle
quelle
Antworten:
Was Sie wörtlich gepostet haben, bedeutet "Finden Sie alle Divs, die sich innerhalb von Section Divs befinden und das erste Kind ihres Elternteils sind." Das Sub enthält ein Tag, das dieser Beschreibung entspricht.
Es ist mir unklar, ob Sie beide Kinder der Hauptdiv wollen oder nicht. Wenn ja, verwenden Sie Folgendes:
Wenn Sie nur den Header möchten, verwenden Sie Folgendes:
Mit den
>
Änderungen ändert sich die Beschreibung in: "Finde alle Divs, die die direkten Nachkommen von Section Divs sind", was du willst.Bitte beachten Sie, dass alle gängigen Browser außer IE6 diese Methode unterstützen. Wenn die IE6-Unterstützung geschäftskritisch ist, müssen Sie den untergeordneten Divs Klassen hinzufügen und diese stattdessen verwenden. Ansonsten lohnt es sich nicht, sich darum zu kümmern.
quelle
div.section > div:first-child > div { /* Cancel Changes*/}
Diese Frage wurde bei Google gesucht. Dies gibt das erste untergeordnete Element eines Elements mit Klasse zurück
container
, unabhängig davon, um welchen Typ es sich handelt.quelle
CSS wird als Cascading Style Sheets bezeichnet, da die Regeln vererbt werden. Unter Verwendung der folgenden Selektor, wird wählen Sie einfach die direkte Kind der Eltern, aber seine Regeln werden geerbt durch das
div
‚s Kinderdivs
:Nun werden sowohl das
div
als auch seine Kinder seinred
. Sie müssen alles aufheben, was Sie für das übergeordnete Element festgelegt haben, wenn Sie nicht möchten, dass es erbt:Jetzt wird nur die Single
div
, von der ein direktes Kinddiv.section
ist, rot sein, aber ihre Kinderdivs
werden immer noch schwarz sein.quelle
quelle
Verwenden Sie
div.section > div
.Besser noch, verwenden Sie ein
<h1>
Tag für die Überschrift unddiv.section h1
in Ihrem CSS, um ältere Browser (die nichts über das wissen>
) zu unterstützen und Ihre Markup-Semantik beizubehalten.quelle
Der CSS-Selektor für das direkte erste Kind in Ihrem Fall lautet:
Der direkte Selektor ist> und der erste untergeordnete Selektor ist: erstes Kind
Kein Sternchen vor dem: wie andere vorschlagen. Sie können die DOM-Suche beschleunigen, indem Sie diese Lösung ändern, indem Sie das Tag voranstellen:
quelle