Có sự khác biệt nào giữa div~div
và div:not(:first-of-type)
không? Ngoài IE6 bất cứ lỗi nào, có trường hợp nào họ sẽ làm những việc khác nhau không?Sự khác biệt giữa div ~ div và div: not (: first-of-type)?
Trả lời
Về yếu tố phù hợp, không có sự khác biệt. Bất kỳ số div
nào theo sau một số khác div
trong cùng một bậc cha mẹ, theo sự cần thiết, không phải là phần tử đầu tiên thuộc loại div
trong phạm vi gốc của nó.
Nếu chọn anh chị em đã +
và không ~
, sau đó div+div
có điều kiện nói thêm rằng các yếu tố sau đây phải xuất hiện ngay sau khi các yếu tố trước. Đây không phải là trường hợp với ~
- bất kỳ số lượng anh chị em nào của bất kỳ loại nào khác có thể xuất hiện giữa hai người.
Nếu pseudo-class là :first-child
và không :first-of-type
, sau đó div:not(:first-child)
sẽ vẫn phù hợp div:first-of-type
nếu div
đầu tiên trong vòng mẹ của nó không phải là đứa con đầu lòng của mình.
Dưới đây là một ví dụ:
<section>
<div></div> <!-- div:first-child or div:first-of-type -->
<div></div> <!-- div+div or div~div or div:nth-of-type(2) -->
<p></p>
<div></div> <!-- div+p+div or div~div or div:nth-of-type(3),
but not div+div -->
</section>
<section>
<h1></h1> <!-- h1:first-child -->
<div></div> <!-- div:first-of-type or div:nth-child(2) -->
<div></div> <!-- div~div or div:nth-of-type(2) or div:nth-child(3) -->
</section>
Về specificity, có một sự khác biệt. Nếu bạn có các quy tắc CSS với cả hai bộ chọn phù hợp với các phần tử giống nhau, thì div:not(:first-of-type)
sẽ được ưu tiên do lớp học giả :first-of-type
. Lưu ý rằng chính bản thân số :not()
không được tính - chỉ có đối số của nó được xem xét.
Dưới đây là một minh họa:
div {
float: left;
width: 50px;
height: 50px;
margin: 5px;
border: 1px solid red;
}
/* 1 pseudo-class, 1 type -> specificity = 0-1-1 */
div:not(:first-of-type) {
border-color: green;
}
/* 2 types -> specificity = 0-0-2 */
div ~ div {
border-color: blue;
}
<section>
<div></div>
<div></div>
<div></div>
</section>
- 1. khác biệt chính xác giữa div và quot
- 2. Chuyển đổi giữa các div trong div khác bằng jQuery?
- 3. động trung tâm div trên div khác
- 4. Thêm div vào một div
- 5. Sự khác biệt giữa DIV như hiện tại và SPAN có hiển thị: chặn
- 6. Kéo và chèn div vào một div
- 7. Sử dụng một DIV để mặt nạ khác DIV
- 8. Center div giữa giữa và trái
- 9. Xóa div giữa div bằng cách sử dụng Jquery
- 10. Cố định div giữa hai phần tử div
- 11. cách xoay ngang giữa nhiều div trong div cha mẹ
- 12. Cách đặt bản đồ thành div trong div khác?
- 13. Đặt chiều cao DIV bằng với một DIV khác
- 14. Fly một Div khác div với hiệu ứng bay
- 15. lề trên để div bên trong div khác
- 16. Vị trí DIV có liên quan đến một DIV khác?
- 17. Chuyển tràn từ một div này sang một div khác
- 18. DIV bên trong một DIV bên trong DIV khác với CSS
- 19. Stretch right div div width?
- 20. CSS chọn một div sau một div với một div
- 21. Có phải "div> p" & "div p" giống nhau không?
- 22. Sự khác nhau giữa điều khiển Bảng điều khiển và Div
- 23. Căn giữa nhiều trẻ DIV
- 24. canvas in a div with display none does not work
- 25. sự khác biệt giữa 'và "trong JavaScript?
- 26. Đặt một div phía trên một div
- 27. vị trí: tuyệt đối, div theo div
- 28. CodeMirror fill Div và làm cho Div 100% height
- 29. Biến mất đường viền DIV hoặc DIV
- 30. cách lặp qua các div con của div và nhận các id của div con?
Có thể có sự khác biệt trong [đặc hiệu] (http://www.w3.org/TR/css3-selectors/#specificity). Từ các thử nghiệm của tôi, 'li: not (: first-of-type)' sẽ ghi đè 'li ~ li'. –
@Sergey K: Bạn nói đúng. Tôi đã không nghĩ về tính đặc hiệu. Tôi sẽ chỉnh sửa câu trả lời của mình. – BoltClock