CSS con cuối cùng (-1)


161

Tôi đang tìm kiếm một bộ chọn css cho phép tôi chọn con trước của danh sách.

<ul>
     <li>1</li>
     <li>2</li>
     <li>3</li>
     <li>4</li>
     <li>5</li> <!-- select the pre last item dynamically no matter how long this list is -->
     <li>6</li>
</ul>

Phương pháp tĩnh:

ul li:nth-child(5)

Phương pháp động:

ul li:last-child(-1)

Tất nhiên điều đó không hợp lệ, cũng là đứa con cuối cùng dường như không cung cấp một cách năng động .. Tôi có thể dự phòng javascript nhưng tôi tự hỏi liệu có cách nào css tôi bỏ qua không


11
Nó thường được gọi là "thứ hai cuối cùng". Ngoài ra còn có một từ ưa thích khác cho nó: "áp chót".
BoltClock

2
@BoltClock Tôi thích từ "áp chót". Bây giờ tôi sẽ sử dụng nó trong một bản cập nhật Facebook lén lút.
Andrew Barber


2
Cảm ơn tất cả mọi người đề cập đến áp chót - điều này đã hiển thị số 1 trên Google cho "áp chót css".
chakena

Câu trả lời:


303

Bạn có thể sử dụng :nth-last-child(); Thực tế, ngoài ra :nth-last-of-type()tôi không biết bạn có thể sử dụng cái gì khác. Tôi không chắc ý của bạn là "năng động", nhưng nếu bạn muốn nói liệu phong cách đó có áp dụng cho đứa trẻ thứ hai mới khi có thêm trẻ em vào danh sách hay không, thì nó sẽ như vậy. Fiddle tương tác.

ul li:nth-last-child(2)

Được rồi mà hoạt động! Trình thông dịch mã (jsfiddle) đã không xác thực nó .. Đoán lỗi về phía họ! cảm ơn
Hedde van der Heide

4
@David Allen: Tôi không nghĩ anh ấy quan tâm nếu anh ấy đã cố gắng sử dụng :nth-child(5):last-child. Nhận xét như thế này nên đi vào câu hỏi hoặc được giữ cho bản thân.
BoltClock

1
Anh ta có thể không biết về vấn đề không hỗ trợ. Tôi chỉ làm nổi bật nó .... Tôi đã đưa ra câu trả lời bằng jQuery và tôi rất vui khi nói rằng nó sẽ không hoạt động với người dùng khi tắt JavaScript. nhưng nhiều người sử dụng IE7 / 8 hơn là có JS bị xáo trộn
David Allen

1
@David, tôi tin rằng plugin selectivrz hoặc Modernizr có thể khắc phục vấn đề đó, tôi sẽ phải xem các tài liệu
Hedde van der Heide

@ArssKwargs Bình luận tuyệt vời chưa bao giờ nghe về selectivizr. Hãy cho chúng tôi biết nếu nó hỗ trợ đứa con thứ n
David Allen

1

Trừ khi bạn có thể khiến PHP gắn nhãn phần tử đó với một lớp, tốt hơn là bạn nên sử dụng jQuery.

jQuery(document).ready(function () {
  $count =  jQuery("ul li").size() - 1;
  alert($count);
  jQuery("ul li:nth-child("+$count+")").css("color","red");
});

6
Thật khó chịu khi jQuery không thực hiện :nth-last-child()chỉ vì John nghĩ rằng không ai sử dụng nó .
BoltClock

Tôi muốn gắn nhãn với python ;-) ontopic: Vâng css có vẻ tốt theo cách này, có lẽ jsfiddle cũng nghĩ không ai sử dụng nó :-)
Hedde van der Heide

@ArssKwargs: Lạ tại sao nó không hoạt động trong jsFiddle. Tùy thuộc vào trình duyệt để giải thích nó; nó không có công cụ CSS riêng.
BoltClock

@BoltClock đừng hiểu sai về tôi, nó hoạt động, trình trợ giúp mã (trực quan hóa màu sắc) chỉ biểu thị một cái gì đó không được tiết lộ (vì vậy tôi thậm chí không thử)
Hedde van der Heide

Tôi không nghĩ rằng bất kỳ mã nào là không được tiết lộ. Nhưng tôi biết ý của bạn về "trực quan hóa màu sắc"
David Allen
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.