Bộ chọn cụ thể nhất được ưu tiên. Đây được đề cập trong CSS2.1:
Giả thành phần cư xử giống như các yếu tố thực sự trong CSS với các ngoại lệ nêu dưới đây và elsewhere.
Xét về hành vi duyệt thực tế, theo như tôi biết, hành vi này là đáng tin cậy trên tất cả các trình duyệt hỗ trợ :before
và :after
trên các phần tử không được thay thế như a
, trong đó CSS2.1 xác định hành vi cho các phần tử giả đó, không giống như các phần tử được thay thế như img
. Điều này có ý nghĩa, bởi vì nếu nhiều hơn một phần tử giả như vậy được tạo ra, trình duyệt sẽ không biết làm thế nào nó nên đặt chúng ra trong cấu trúc định dạng. Trong ví dụ sau, theo độ đặc hiệu và tầng, a.inactive:before
sẽ được ưu tiên và phần tử giả :before
cho liên kết này sẽ có nội dung phù hợp (vì cả hai bộ chọn đều giống nhau - có bộ chọn loại, bộ chọn lớp và một pseudo-element):
a.administrator:before {
content: '[Administrator] ';
}
a.inactive:before {
content: '[Inactive User] ';
}
<a class="administrator inactive" href="profile.php?userid=123">Username</a>
Nếu một phần tử có thể kết hợp nhiều hơn một selector với phần tử giả giống nhau, và bạn muốn tất cả trong số họ để áp dụng bằng cách nào đó, bạn sẽ cần phải tạo các quy tắc CSS bổ sung với lược bộ chọn ined để bạn có thể xác định chính xác trình duyệt nên làm gì trong những trường hợp đó. Mở rộng ví dụ trên:
a.administrator:before {
content: '[Administrator] ';
}
a.inactive:before {
content: '[Inactive User] ';
}
a.administrator.inactive:before {
content: '[Administrator] [Inactive User] ';
}
<a class="administrator inactive" href="profile.php?userid=123">Username</a>
kinh nghiệm, các ghi đè nhiều nhất cụ thể * ít hơn * cụ thể; nhưng tôi không có thông số kỹ thuật nào để tôi có thể xác nhận đó là hành vi * đúng *; nhưng điều đó dường như gắn liền với các quy tắc cụ thể chung của CSS, tôi đoán vậy. –
Hóa ra câu hỏi này trùng lặp với câu hỏi khác mà tôi đã trả lời vài tháng trước đó. Tôi xin lỗi vì đã không nhớ nó? [Ban đầu nó là một lớp lót (hai người gửi đi).] (Http://stackoverflow.com/revisions/11999197/1) Tôi đã hợp nhất hầu hết thông tin trong câu trả lời này vào câu trả lời trước đó. – BoltClock