Có cách nào để sử dụng bộ chọn CSS để đưa con ở giữa vào danh sách các phần tử không?Lớp con trung cấp
Tôi biết rằng không có bộ chọn :middle-child
theo nghĩa đen, nhưng có cách nào khác mà không cần sử dụng Javascript không?
Có cách nào để sử dụng bộ chọn CSS để đưa con ở giữa vào danh sách các phần tử không?Lớp con trung cấp
Tôi biết rằng không có bộ chọn :middle-child
theo nghĩa đen, nhưng có cách nào khác mà không cần sử dụng Javascript không?
Javascript là cách duy nhất để thực hiện phía ứng dụng khách này.
Nên có giải pháp sass – Muhammed
Bạn đã thử :nth-child(#)
chưa?
Tùy thuộc vào trang bạn muốn chọn, bạn chỉ cần thay thế # bằng số.
Điều đó chỉ hoạt động nếu số lượng phần tử được biết bắt đầu bằng. Tôi đang tìm một cái gì đó mà sẽ làm việc cho một danh sách chiều dài không rõ. – Jason
Vâng, tôi cho rằng nếu bạn không biết tổng số thì điều này cũng không giúp được gì, nhưng trong trường hợp bạn DO - hãy xem [CSS3-nth-child trên SO] này (http: // stackoverflow.com/questions/6692145/nth-child-css-matching-2nd-5th-8th-elements) đó là một câu hỏi tương tự với câu hỏi của bạn. –
Nếu bạn muốn áp dụng kiểu cho tất cả các yếu tố không phải là con đầu tiên cũng như con cuối cùng, bạn có thể sử dụng :not(:first-child)
, áp dụng kiểu và sau đó sử dụng :last-child
để 'lấy phong cách' từ phần tử cuối cùng. Nhưng bạn phải suy nghĩ về những gì sẽ xảy ra khi có ít hơn 3 yếu tố.
Nếu bạn muốn tránh trùng lặp (trong phần 'lấy kiểu đi'), hãy kiểm tra câu trả lời của tôi, kết hợp hai bộ chọn 'không', để nắm bắt tất cả các phần tử ở giữa ... :-) –
này đã làm việc tốt cho tôi:
*:not(:first-child):not(:last-child) {
...
}
Bạn có thể xem ví dụ về điều này ở đây: http://codepen.io/bentomas/pen/Gwqoe
Thông báo trước một điều này là nó chỉ hoạt động trong IE 9+: http://caniuse.com/#feat=css-sel3
Nó sẽ không chỉ hoạt động nếu có ba mục? Vào thời điểm đó tôi đang tìm kiếm thứ gì đó có nhiều yếu tố hơn trong đó. – Jason
Không, điều này sẽ chọn tất cả các yếu tố không phải là đứa trẻ đầu tiên và không phải là đứa trẻ cuối cùng. Bạn có thể thấy nó hoạt động ở đây: http://codepen.io/bentomas/pen/Gwqoe – bentomas
Ồ, trừ khi bạn muốn con * chính xác * ở giữa (tức là chỉ có một phần tử nên được khớp). Tôi đã nghĩ bạn muốn chọn tất cả những đứa trẻ đang ở giữa. Ít nhất đó là những gì tôi mong đợi một lớp học giả: "trung-con" để làm khi tôi đi tìm nó và tìm thấy chủ đề này. – bentomas
Trong khi không thanh lịch, nếu bạn biết giới hạn trên và dưới của tổng số phần tử, bạn có thể sử dụng phương pháp tiếp cận vũ lực để chọn phần tử ở giữa.
Ví dụ: các quy tắc sau sẽ chọn phần tử ở giữa trong bộ 5, 7 hoặc 9 phần tử.
div:nth-child(3):nth-last-child(3) {
/* The middle element in a set of 5 is the 3rd element */
}
div:nth-child(4):nth-last-child(4) {
/* The middle element in a set of 7 is the 4th element */
}
div:nth-child(5):nth-last-child(5) {
/* The middle element in a set of 9 is the 5th element */
}
Hoặc với Sass:
@for $i from 3 through 5 {
div:nth-child(#{$i}):nth-last-child(#{$i}) {
/* The middle element */
}
}
Nếu có thể có số phần tử chẵn, người ta có thể bao gồm 'div: nth-child (-1 + # {$ i}): nth-last-child (# {$ i})' và/hoặc ' div: nth-child (# {$ i}): nth-last-child (-1 + # {$ i}) 'để chọn phần tử vừa trái hoặc phải của tâm, tương ứng. – Blazemonger
Bạn có thể sử dụng "không đầu tiên và không kéo dài" cách tiếp cận, như vậy:
CSS
li:not(:first-child):not(:last-child) {
color:red;
}
HTML
<ul>
<li>First</li>
<li>Second</li>
<li>Third</li>
</ul>
Kiểm tra JsFiddle
Có số lượng trẻ em thay đổi? – jackweinbender
Số lượng phần tử được đặt khi tải trang và có thể thay đổi người dùng thành người dùng. – Jason
Nếu bạn đang làm việc trong PHP hoặc Ruby hoặc bất cứ điều gì, bạn chắc chắn có thể viết một hàm để thêm một lớp vào phần tử ở giữa. – jackweinbender