Tôi đã đọc rất nhiều bài viết về hiệu suất CSS, chẳng hạn như;Tại sao bộ chọn chẳng hạn như [title = "home"] chậm hơn so với sử dụng lớp?
tôi nhận được lý do tại sao selectors như thế này là xấu
#social a {
}
Là trình duyệt sẽ đọc một đầu tiên, sau đó bị buộc phải lặp qua tất cả các <a> thẻ trong trang.
Nhưng tại sao bộ chọn chẳng hạn như a [title = "home"] chậm hơn sử dụng lớp?
Tôi giả định rằng trình duyệt tạo một số loại chỉ mục để có thể tìm ra yếu tố nào có một lớp nhất định (đúng?).
Nhưng không nên trình duyệt cũng đã lập chỉ mục những yếu tố nào có thuộc tính nhất định? (chẳng hạn như tiêu đề)?
Câu hỏi của tôi là; tại sao CSS/phần tử tra cứu chậm hơn khi sử dụng các bộ chọn như a [title = "home"] so với sử dụng một lớp ? Trình duyệt sẽ hành động như thế nào để kết quả chậm hơn nhiều?
"Nhưng các trình duyệt không nên cũng đã lập chỉ mục những yếu tố nào có thuộc tính nhất định?" - bạn có nghĩ, điều này có ý nghĩa không? Một lớp học nói điều gì đó như "Này, tôi thuộc loại này, ai cũng có thể làm gì đó với tôi!" trong khi một thuộc tính giữ chỗ chỉ nói "Yo, trình duyệt, hiển thị cho tôi theo cách này và sau đó quên tôi".Và kể từ khi lập chỉ mục mất một thời gian, tôi nghĩ rằng các trình duyệt quyết định lập chỉ mục loại thuộc tính đầu tiên. – contradictioned
FYI, thuật ngữ "bộ chọn phổ quát" cụ thể đề cập đến bộ chọn '*'. 'a [title =" home "]' không phải là một bộ chọn phổ quát; '[title =" home "]' không có 'a', mặt khác, bạn có thể nói sử dụng một bộ chọn phổ biến * ngầm * vì nó tương đương với' * [title = "home"] '. – BoltClock
Ngoài ra, "Khi trình duyệt sẽ đọc đầu tiên, sau đó buộc phải lặp qua tất cả các thẻ trong trang". Đây không phải là cách các trình duyệt chính thống hoạt động; xem http://stackoverflow.com/questions/5797014/why-do-browsers-match-css-selectors-from-right-to-left – BoltClock