Bạn có thể chọn một nửa các thành phần trong CSS tinh khiết ... tối đa một điểm.
Hạn chế duy nhất là bạn đã biết số lượng tối đa của tổng số mục. Có thể là 150 nhưng sau đó nó sẽ không làm việc với 151.
Dưới đây là một bản demo: http://jsfiddle.net/tcK3F/ (*)
CSS tối thiểu:
/* selecting half or more items. Up to 6 */
li:first-child:last-child,
li:nth-child(n+2):nth-last-child(-n+2),
li:nth-child(n+3):nth-last-child(-n+3),
li:nth-child(n+4):nth-last-child(-n+4),
li:nth-child(n+5):nth-last-child(-n+5),
li:nth-child(n+6):nth-last-child(-n+6) {
color: white;
background: darkblue;
}
/* selecting half or less items. Up to 6 */
li:nth-child(n+2):last-child,
li:nth-child(n+3):nth-last-child(-n+2),
li:nth-child(n+4):nth-last-child(-n+3),
li:nth-child(n+5):nth-last-child(-n+4),
li:nth-child(n+6):nth-last-child(-n+5),
li:nth-child(n+7):nth-last-child(-n+6){
font-style: italic;
border: 2px solid red;
}
Dựa trên ý tưởng từ:
Bí quyết là từ André Luís và nhìn thấy trong một bài đăng từ Lea Verou: Styling elements based on sibling count. Tôi thích nghi nó với nhu cầu của bạn của một lựa chọn chia.
Giải thích nhanh:
:nth-last-child(-n+3)
sẽ chọn 3 last các mục từ cha mẹ; :nth-child(n+3)
sẽ chọn tất cả các mục ngoại trừ các mục đầu tiên. Kết hợp chúng và bạn có thể chọn các thành phần trong CSS thuần túy dựa trên những gì theo chúng (hoặc có bao nhiêu trẻ em trong một phụ huynh). Ngoại trừ bạn sẽ phải kết hợp 75 trong số đó với 74 dấu phẩy nếu bạn muốn mẹo này hoạt động với 150 phần tử ...:)
Compatibility là IE9 + (polyfills JS tồn tại)
(*)
phần đầu của HTML: ngay cả số hạng mục danh sách;
phần thứ hai: số lẻ các mục danh sách
Quy tắc CSS đầu tiên: sẽ chọn N cuối cùng từ 2N mục hoặc N + 1/2 mục cuối cùng từ 2N + 1 và tạo kiểu chúng màu trắng trên xanh (ví dụ: 3 mục tổng cộng 5 hoặc 6).
quy tắc CSS thứ hai: sẽ chọn N cuối cùng từ 2N mục hoặc N-1/2 mục cuối cùng từ 2N + 1 và tạo kiểu cho đường viền màu đỏ và in nghiêng (ví dụ: 2 mục trong tổng số 4 hoặc 5)
Yeah , bạn phải sử dụng JavaScript; CSS không có khả năng xác định có bao nhiêu phần tử hoặc cú pháp để chỉ định số lượng. –
vì vậy, bạn sẽ chọn tất cả? chỉ cần biết cũng là nơi giữa là? – caramba
@DavidThomas Kiểm tra câu trả lời của tôi để xác định có bao nhiêu phần tử trong CSS (liên kết đến bài đăng của Lea Verou) và chỉ định số lượng: ': (đầu tiên/cuối) - (kiểu/con) (aN + b)' cho phép . Ngoài ra, 'li + li + li + li' để chọn các phần tử N ngoại trừ phần tử M đầu tiên. Những gì bạn không thể làm là ** số học ** và đếm số * thực sự * không xác định các phần tử (mặc dù DOM không có số nguyên tố không xác định, trong hầu hết * các trường hợp) – FelipeAls