Wie würde ich alle außer dem letzten Kind mit CSS3-Selektoren auswählen?
Zum Beispiel wäre es nur das letzte Kind zu bekommen div:nth-last-child(1)
.
Wie würde ich alle außer dem letzten Kind mit CSS3-Selektoren auswählen?
Zum Beispiel wäre es nur das letzte Kind zu bekommen div:nth-last-child(1)
.
Antworten:
Sie können die Negationspseudoklasse:not()
gegen die :last-child
Pseudoklasse verwenden . Mit der Einführung von CSS Selectors Level 3 funktioniert es nicht in IE8 oder niedriger:
:not(:last-child) { /* styles */ }
div
im OP-Beispiel)
&:not(:last-child) { /* styles * }
das Element verwenden, das Sie beeinflussen möchten.
Sie können Ihren Stil auf alle Div anwenden und den letzten neu initialisieren mit : last-child :
Zum Beispiel in CSS :
.yourclass{
border: 1px solid blue;
}
.yourclass:last-child{
border: 0;
}
oder in SCSS :
.yourclass{
border: 1px solid rgba(255, 255, 255, 1);
&:last-child{
border: 0;
}
}
Die Lösung von Nick Craver funktioniert, aber Sie können auch Folgendes verwenden:
:nth-last-child(n+2) { /* Your code here */ }
Chris Coyier von CSS Tricks hat dafür einen netten : n-ten Tester gemacht.
:not
Pseudo sehr teuer ist. Es könnte daher eine gute Idee sein, dies nach Möglichkeit zu vermeiden.
Wenn IE9 kommt, wird es einfacher sein. In den meisten Fällen können Sie das Problem jedoch auf ein Problem umstellen, das Folgendes erfordert: Erstes Kind und Stil der gegenüberliegenden Seite des Elements (IE7 +).
Die Verwendung der Lösung von Nick Craver mit Selectivizr ermöglicht eine browserübergreifende Lösung (IE6 +).
Verwenden Sie, um Elemente von last zu finden
<style>
ul li:nth-last-of-type(3n){ color:#a94442} /**/
</style>
Die Lösung von Nick Craver gab mir das, was ich brauchte, aber um es für diejenigen, die CSS-in-JS verwenden, explizit zu machen:
const styles = {
yourClass: {
/* Styles for all elements with this class */
'&:not(:last-child)': {
/* Styles for all EXCEPT the last element with this class */
},
},
};
.nav-menu li:not(:last-child){
// write some style here
}
Dieser Code sollte den Stil auf alle anwenden