Làm cách nào để tôi chọn tất cả trừ đứa trẻ cuối cùng sử dụng bộ chọn CSS3?
Ví dụ, chỉ có được đứa con cuối cùng div:nth-last-child(1)
.
Làm cách nào để tôi chọn tất cả trừ đứa trẻ cuối cùng sử dụng bộ chọn CSS3?
Ví dụ, chỉ có được đứa con cuối cùng div:nth-last-child(1)
.
Câu trả lời:
Bạn có thể sử dụng lớp giả phủ định:not()
chống lại lớp :last-child
giả . Được giới thiệu CSS Selector Cấp 3, nó không hoạt động trong IE8 trở xuống:
:not(:last-child) { /* styles */ }
div
trong ví dụ OP)
&:not(:last-child) { /* styles * }
bên trong yếu tố bạn muốn tác động.
Bạn có thể áp dụng kiểu của mình cho tất cả div và khởi tạo lại cái cuối cùng với : last-child :
ví dụ trong CSS :
.yourclass{
border: 1px solid blue;
}
.yourclass:last-child{
border: 0;
}
hoặc trong SCSS :
.yourclass{
border: 1px solid rgba(255, 255, 255, 1);
&:last-child{
border: 0;
}
}
Giải pháp của Nick Craver hoạt động nhưng bạn cũng có thể sử dụng điều này:
:nth-last-child(n+2) { /* Your code here */ }
Chris Coyier của CSS Tricks đã tạo ra một thử nghiệm hay : thứ n cho việc này.
:not
giả rất đắt tiền. Vì vậy, nó có thể là một ý tưởng tốt để cố gắng tránh nó khi có thể.
Khi IE9 đến, nó sẽ dễ dàng hơn. Tuy nhiên, rất nhiều thời gian, bạn có thể chuyển vấn đề sang một yêu cầu: con đầu tiên và tạo kiểu cho phần đối diện của phần tử (IE7 +).
Sử dụng giải pháp của nick craver với selectivizr cho phép giải pháp trình duyệt chéo (IE6 +)
để tìm các yếu tố cuối cùng, sử dụng
<style>
ul li:nth-last-of-type(3n){ color:#a94442} /**/
</style>
Giải pháp của Nick Craver đã cho tôi những gì tôi cần nhưng để làm cho nó rõ ràng cho những người sử dụng 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
}
mã này nên áp dụng kiểu cho tất cả