Jak wybrać wszystkie oprócz ostatniego dziecka za pomocą selektorów CSS3?
Na przykład, aby uzyskać tylko ostatnie dziecko, byłoby div:nth-last-child(1)
.
Jak wybrać wszystkie oprócz ostatniego dziecka za pomocą selektorów CSS3?
Na przykład, aby uzyskać tylko ostatnie dziecko, byłoby div:nth-last-child(1)
.
Odpowiedzi:
Możesz użyć pseudoklasy negacji:not()
przeciwko :last-child
pseudoklasie . Wprowadzany selektor CSS poziom 3, nie działa w IE8 lub niższej:
:not(:last-child) { /* styles */ }
div
w przykładzie PO)
&:not(:last-child) { /* styles * }
wewnątrz elementu, na który chcesz wpłynąć.
Możesz zastosować swój styl do wszystkich div i ponownie zainicjować ostatni z : last-child :
na przykład w CSS :
.yourclass{
border: 1px solid blue;
}
.yourclass:last-child{
border: 0;
}
lub w SCSS :
.yourclass{
border: 1px solid rgba(255, 255, 255, 1);
&:last-child{
border: 0;
}
}
Rozwiązanie Nicka Cravera działa, ale możesz także użyć tego:
:nth-last-child(n+2) { /* Your code here */ }
Chris Coyier z CSS Tricks wykonał niezły : n-ty tester do tego.
:not
pseudo jest bardzo drogie. Dlatego dobrym pomysłem może być unikanie go tam, gdzie to możliwe.
Kiedy nadejdzie IE9, będzie łatwiej. Często jednak możesz zmienić problem na wymagający: pierworodny i stylizować przeciwną stronę elementu (IE7 +).
Używanie rozwiązania nick cravera z selectivizr pozwala na rozwiązanie dla różnych przeglądarek (IE6 +)
aby znaleźć elementy z ostatniego, użyj
<style>
ul li:nth-last-of-type(3n){ color:#a94442} /**/
</style>
Rozwiązanie Nicka Cravera dało mi to, czego potrzebowałem, ale wyraźnie mówiąc o tych, którzy używają 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
}
ten kod powinien stosować ten styl do wszystkich