Mit dem last-child
Selektor wird das letzte untergeordnete Element eines übergeordneten Elements ausgewählt. Es kann nicht verwendet werden, um das letzte untergeordnete Element mit einer bestimmten Klasse unter einem bestimmten übergeordneten Element auszuwählen.
Der andere Teil des zusammengesetzten Selektors (der vor dem angehängt ist :last-child
) gibt zusätzliche Bedingungen an, die das letzte untergeordnete Element erfüllen muss, damit es ausgewählt werden kann. Im folgenden Snippet sehen Sie, wie sich die ausgewählten Elemente je nach Rest des zusammengesetzten Selektors unterscheiden.
.parent :last-child{
font-weight: bold;
}
.parent div:last-child{
background: crimson;
}
.parent div.child-2:last-child{
color: beige;
}
<div class='parent'>
<div class='child'>Child</div>
<div class='child'>Child</div>
<div class='child'>Child</div>
<div>Child w/o class</div>
</div>
<div class='parent'>
<div class='child'>Child</div>
<div class='child'>Child</div>
<div class='child'>Child</div>
<div class='child-2'>Child w/o class</div>
</div>
<div class='parent'>
<div class='child'>Child</div>
<div class='child'>Child</div>
<div class='child'>Child</div>
<p>Child w/o class</p>
</div>
Um Ihre Frage zu beantworten, wird im Folgenden das letzte untergeordnete li
Element mit der Hintergrundfarbe Rot formatiert.
li:last-child{
background-color: red;
}
Aber der folgende Selektor würde für Ihr Markup nicht funktionieren, da der last-child
nicht das hat class='complete'
, obwohl es ein ist li
.
li.complete:last-child{
background-color: green;
}
Es hätte funktioniert, wenn (und nur wenn) der letzte li
in Ihrem Markup auch hatte class='complete'
.
So beantworten Sie Ihre Anfrage in den Kommentaren :
@ Harry Ich finde es ziemlich seltsam, dass: .complete: last-of-type nicht funktioniert, aber .complete: first-of-type funktioniert, unabhängig von der Position, in der es sich um das übergeordnete Element handelt. Danke für Ihre Hilfe.
Der Selektor .complete:first-of-type
arbeitet in der Geige, weil er (dh das Element mit class='complete'
) immer noch das erste Element des Typs li
innerhalb des übergeordneten Elements ist . Versuchen Sie, <li>0</li>
als erstes Element unter dem hinzuzufügen, ul
und Sie werden feststellen, dass first-of-type
auch Flops. Dies liegt daran, dass die Selektoren first-of-type
und last-of-type
das erste / letzte Element jedes Typs unter dem übergeordneten Element auswählen.
Weitere Informationen zur Funktionsweise des Selektors finden Sie in der Antwort von BoltClock in diesem Thread. Das ist so umfassend wie es nur geht :)