* > ul li:nth-child(4n+3)
Thứ nhất, * >
lúc bắt đầu chọn này là hoàn toàn không cần thiết (Nó nói với các trình duyệt để tìm kiếm một ul
đó là con của cái gì khác;. Bất cứ điều gì khác Trong đó tất nhiên tất cả ul
các yếu tố, nếu không có gì khác, chúng sẽ nằm trong thẻ body
).
Vì vậy, bạn có thể xóa điều đó. Nó sẽ làm cho nó đơn giản hơn để làm việc với và dễ dàng hơn để giải thích.
Bây giờ chúng ta lại với điều này:
ul li:nth-child(4n+3)
Lý do nó được chọn cả hai 2.3
và 3
là bởi vì cả hai bộ lại li
yếu tố có nguồn gốc từ các yếu tố phụ huynh ul
duy nhất. Sử dụng dấu cách giữa các bộ chọn cho trình duyệt tìm kiếm bất kỳ hậu duệ nào phù hợp; nó không quan tâm về cách xa cây để tìm kiếm các yếu tố phù hợp li
, vì vậy nó tìm thấy cả hai bộ.
Để trả lời câu hỏi của bạn về lý do tại sao 2.3
không được xem là phần tử thứ bảy trong tập hợp, câu trả lời là CSS xem từng bộ phận li
yếu tố như một nhóm hoàn toàn riêng biệt; ngay cả khi bộ chọn xảy ra khớp với hai hoặc nhiều bộ phần tử như bộ chọn ban đầu của bạn, bộ lọc vẫn sẽ chạy một bộ đếm riêng cho từng phần, vì vậy, 2.3
và 3
đều được xem là phần tử thứ ba trong bộ tương ứng của chúng.
Nếu bạn muốn chỉ chọn các yếu tố đó là trẻ em của ul
(tức ngay dưới nó trong hệ thống cấp bậc), bạn cần phải sử dụng bộ chọn con (>
) chứ không phải chỉ là một không gian.
ul > li:nth-child(4n+3)
này bây giờ sẽ chỉ chọn các thiết lập bên ngoài của li
yếu tố, vì vậy chỉ yếu tố 3
của bạn sẽ được chọn.
Hy vọng rằng sẽ giúp giải thích mọi thứ.
Bằng cách này, trên một lưu ý tổng quát hơn, bạn có thể tìm thấy điều này hữu ích: CSS '>' selector; what is it?
Bỏ qua dự phòng '*>', công cụ chọn của bạn có nghĩa là: "chọn mọi' li' là con của "4n + 3'th của phần tử gốc và là phần tử con của phần tử' ul' ". Không có thứ như "phần tử cha" với bộ chọn thứ n-con. Mỗi phần tử trên trang được chọn để xem liệu đó có phải là phần tử thứ n liên quan đến phần tử * của nó không. –