2016-08-16 5 views
0

Ich habe gerade diese Frage hier auf Stack richtig beantwortet.CSS Child Descendants

Die Frage war, wie die ersten zwei li nach jedem .class1 Element ausgewählt werden.

<ul> 
    <li>Something</li> 
    <li class="class1">Important</li> 
    <li>I want this</li> 
    <li>I want this</li> 
    <li class="class1">Important</li> 
    <li>I want this</li> 
    <li>I want this</li> 
    <li>Something</li> 
    <li>Something</li> 
</ul> 

Dies war die (gut) korrekt und akzeptierte Antwort:

.class1 + li will select the first subsequent sibling. 
.class1 + * + li will select the second. 

zu halten Spezifität niedrig, könnte man auch verwenden:

.class1 + *, 
.class1 + * + * {...} 

Nun, ich spiele herum mit diesem und fragte mich, warum das nicht funktioniert:

li.class1 li:nth-child(-n+2) {color:red;} 

Aber funktioniert so:

li:nth-child(-n+2) {color:red;} 
+0

den Raum mit einem Pluszeichen ersetzt funktionieren würde;) – Lemnis

+0

Eigentlich habe ich das schon probiert und es hat nicht funktioniert. Ich denke, + Zeichen wählt das erste angrenzende Element, so nth - funktioniert in diesem Fall nicht. – Vcasso

Antwort

1

Denn wenn Sie

li.class1 li:nth-child(-n+2) {color:red;} 

Sie, dass Li Element fangen und Sie suchen sein Kind aber li Elemente hier kein Kind hat, so dass es wird nicht funktionieren. Wenn ul Klasse 'Klasse1' hätte, würde es vielleicht funktionieren wie du willst.

+0

Vielen Dank für die richtige Antwort! – Vcasso

+0

Ich habe dies mit + versucht, aber es scheint, als ob -nth nicht mit + in CSS funktioniert. – Vcasso

+1

Überprüfen Sie es als richtige Antwort, wenn es korrekt war :) –

1

li.class1 li:nth-child(-n+2) {color:red;}

dieses Geben Stile einer li innerhalb einer li Klasse mit class1

Das funktioniert, wenn die HTML wie

ist
<li class="class1"> 
    ...... 
    <li></li> 
    ...... 
</li> 
Verwandte Themen