¿Cómo seleccionaría todos menos el último hijo usando los selectores CSS3?
Por ejemplo, obtener solo el último hijo sería div:nth-last-child(1)
.
¿Cómo seleccionaría todos menos el último hijo usando los selectores CSS3?
Por ejemplo, obtener solo el último hijo sería div:nth-last-child(1)
.
Respuestas:
Puede usar la pseudo-clase de negación:not()
contra la :last-child
pseudo-clase . Al haber introducido CSS Selectors Level 3, no funciona en IE8 o inferior:
:not(:last-child) { /* styles */ }
div
en el ejemplo OP)
&:not(:last-child) { /* styles * }
dentro del elemento que desea afectar.
Puede aplicar su estilo a todos los div y reinicializar el último con : last-child :
por ejemplo en CSS :
.yourclass{
border: 1px solid blue;
}
.yourclass:last-child{
border: 0;
}
o en SCSS :
.yourclass{
border: 1px solid rgba(255, 255, 255, 1);
&:last-child{
border: 0;
}
}
La solución de Nick Craver funciona pero también puedes usar esto:
:nth-last-child(n+2) { /* Your code here */ }
Chris Coyier de CSS Tricks hizo un buen : enésimo probador para esto.
:not
pseudo es muy caro. Por lo tanto, podría ser una buena idea tratar de evitarlo siempre que sea posible.
Cuando llegue IE9, será más fácil. Sin embargo, la mayoría de las veces, puede cambiar el problema a uno que requiera: primer hijo y diseñar el lado opuesto del elemento (IE7 +).
El uso de la solución de nick craver con selectivizr permite una solución de navegador cruzado (IE6 +)
para encontrar elementos del último, use
<style>
ul li:nth-last-of-type(3n){ color:#a94442} /**/
</style>
La solución de Nick Craver me dio lo que necesitaba, pero para hacerlo explícito para aquellos que usan 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
}
este código debería aplicar el estilo a todos