Come selezionerei tutto tranne l'ultimo figlio usando i selettori CSS3?
Ad esempio, per ottenere solo l'ultimo figlio sarebbe div:nth-last-child(1)
.
Come selezionerei tutto tranne l'ultimo figlio usando i selettori CSS3?
Ad esempio, per ottenere solo l'ultimo figlio sarebbe div:nth-last-child(1)
.
Risposte:
È possibile utilizzare la pseudo-classe di negazione:not()
contro la :last-child
pseudo-classe . In fase di introduzione dei selettori CSS livello 3, non funziona in IE8 o inferiore:
:not(:last-child) { /* styles */ }
div
nell'esempio OP)
&:not(:last-child) { /* styles * }
all'interno dell'elemento che vuoi influenzare.
Puoi applicare il tuo stile a tutti i div e inizializzare di nuovo l'ultimo con : last-child :
ad esempio nei CSS :
.yourclass{
border: 1px solid blue;
}
.yourclass:last-child{
border: 0;
}
o in SCSS :
.yourclass{
border: 1px solid rgba(255, 255, 255, 1);
&:last-child{
border: 0;
}
}
La soluzione di Nick Craver funziona ma puoi anche usare questo:
:nth-last-child(n+2) { /* Your code here */ }
Chris Coyier di CSS Tricks ha fatto un bel : ennesimo tester per questo.
:not
pseudo è molto costoso. Quindi potrebbe essere una buona idea cercare di evitarlo dove possibile.
Quando arriverà IE9, sarà più facile. Molte volte, tuttavia, è possibile passare da un problema a uno che richiede: primo figlio e stile del lato opposto dell'elemento (IE7 +).
L'uso della soluzione di nick craver con selectivizr consente una soluzione cross browser (IE6 +)
per trovare elementi dall'ultimo, utilizzare
<style>
ul li:nth-last-of-type(3n){ color:#a94442} /**/
</style>
La soluzione di Nick Craver mi ha dato ciò di cui avevo bisogno, ma per renderlo esplicito per coloro che usano CSS-in-JS:
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
}
questo codice dovrebbe applicare lo stile a tutti