Comment pourrais-je sélectionner tout sauf le dernier enfant à l'aide des sélecteurs CSS3?
Par exemple, pour obtenir uniquement le dernier enfant serait div:nth-last-child(1)
.
Comment pourrais-je sélectionner tout sauf le dernier enfant à l'aide des sélecteurs CSS3?
Par exemple, pour obtenir uniquement le dernier enfant serait div:nth-last-child(1)
.
Réponses:
Vous pouvez utiliser la pseudo-classe de négation:not()
contre la :last-child
pseudo-classe . Étant introduit CSS Selectors Level 3, il ne fonctionne pas dans IE8 ou ci-dessous:
:not(:last-child) { /* styles */ }
div
dans l'exemple OP)
&:not(:last-child) { /* styles * }
intérieur de l'élément que vous souhaitez affecter.
Vous pouvez appliquer votre style à tous les div et réinitialiser le dernier avec : last-child :
par exemple en CSS :
.yourclass{
border: 1px solid blue;
}
.yourclass:last-child{
border: 0;
}
ou dans SCSS :
.yourclass{
border: 1px solid rgba(255, 255, 255, 1);
&:last-child{
border: 0;
}
}
La solution de Nick Craver fonctionne mais vous pouvez également l'utiliser:
:nth-last-child(n+2) { /* Your code here */ }
Chris Coyier de CSS Tricks a fait un bon : nième testeur pour cela.
:not
pseudo coûte très cher. Il pourrait donc être judicieux d'essayer de l'éviter autant que possible.
Quand IE9 arrivera, ce sera plus facile. Cependant, la plupart du temps, vous pouvez basculer le problème sur celui qui requiert: premier enfant et styliser le côté opposé de l'élément (IE7 +).
L'utilisation de la solution de nick craver avec selectivizr permet une solution multi-navigateur (IE6 +)
pour trouver des éléments du dernier, utilisez
<style>
ul li:nth-last-of-type(3n){ color:#a94442} /**/
</style>
La solution de Nick Craver m'a donné ce dont j'avais besoin mais pour le rendre explicite pour ceux qui utilisent 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
}
ce code doit appliquer le style à tous