Ich versuche, die erste h1
innerhalb einer div
mit einer Klasse namens auszuwählen detail_container
. Es funktioniert, wenn h1
es das erste Element in diesem ist div
, aber wenn es danach kommt ul
, wird es nicht funktionieren.
<style type="text/css">
.detail_container h1:first-child
{
color:blue;
}
</style>
</head>
<body>
<div class="detail_container">
<ul>
<li></li>
<li></li>
</ul>
<h1>First H1</h1>
<h1>Second H1</h1>
</div>
</body>
</html>
Ich hatte den Eindruck, dass das CSS, das ich habe, das erste auswählen wird, h1
egal wo es sich befindet div
. Wie kann ich es zum Laufen bringen?
css
css-selectors
Der Muffin-Mann
quelle
quelle
Antworten:
Der
h1:first-child
Selektor bedeutetDas
:first-child
des Containers hier ist dasul
und kann als solches nicht befriedigenh1:first-child
.Es gibt CSS3s
:first-of-type
für Ihren Fall:Aber mit Problemen mit der Browserkompatibilität und so weiter ist es besser, dem ersten
h1
eine Klasse zu geben und dann auf diese Klasse abzuzielen :quelle
:first-of-type
Selektors.:first-of-type
. Alter Link ist falsch.:first-child
nicht klar zu verstehen, da Sie das Element beispielsweise als CSS-Selektor definierenh1
und anschließend denken, dass Sie das erste Kind von allen in der ausgewählten DOM-Ebene nehmen. Ich habe es so oft falsch benutzt ... Wir müssen uns an den:first-of-type
Selektor gewöhnen und an das erste Kind dieser Art denken .:first-child
wählt das ersteh1
genau dann aus, wenn es das erste untergeordnete Element seines übergeordneten Elements ist. In Ihrem Beispiel ist dasul
das erste Kind derdiv
.Der Name der Pseudoklasse ist etwas irreführend, wird aber hier in der Spezifikation ziemlich klar erklärt .
Mit dem
:first
Selektor von jQuery erhalten Sie, wonach Sie suchen. Du kannst das:$('.detail_container h1:first').css("color", "blue");
quelle
Für diesen speziellen Fall können Sie verwenden:
Aber wenn Sie in vielen Fällen denselben Selektor benötigen, sollten Sie eine Klasse für diese haben, wie BoltClock sagte.
quelle
Sie können auch verwenden
Durch Ändern der Nummer 1 durch eine andere Nummer können Sie ein beliebiges anderes h1-Element auswählen.
quelle
Sie könnten Ihre
h1
Tags in ein anderes einwickeln,div
und dann wäre das erste dasfirst-child
. Dasdiv
braucht nicht einmal Stile. Es ist nur eine Möglichkeit, diese Kinder zu trennen.quelle
Das Element kann nicht direkt vom
<body>
Tag erben . Sie können versuchen, es in ein<dir style="padding-left:0px;"></dir>
Tag einzufügen.quelle