Bộ chọn CSS được kết hợp bởi các công cụ trình duyệt từ phải sang trái. Vì vậy, trước tiên họ tìm thấy những đứa trẻ và sau đó kiểm tra cha mẹ của chúng để xem chúng có khớp với phần còn lại của quy tắc không.
- Tại sao lại thế này?
- Có phải chỉ vì thông số kỹ thuật nói?
- Nó có ảnh hưởng đến bố cục cuối cùng nếu nó được đánh giá từ trái sang phải?
Đối với tôi cách đơn giản nhất để làm điều đó là sử dụng các bộ chọn với số lượng phần tử ít nhất. Vì vậy, ID đầu tiên (vì họ chỉ nên trả về 1 phần tử). Sau đó, có thể các lớp hoặc một phần tử có số lượng nút ít nhất - ví dụ: chỉ có thể có một nhịp trên trang, vì vậy hãy truy cập trực tiếp vào nút đó với bất kỳ quy tắc nào tham chiếu một khoảng.
Dưới đây là một số liên kết sao lưu yêu cầu của tôi
- http://code.google.com.vn/speed/page-speed/docs/rendering.html
- https://developer.mozilla.org/en/Writing_E enough_CSS
Có vẻ như nó được thực hiện theo cách này để tránh phải nhìn vào tất cả con cái của cha mẹ (có thể là nhiều) chứ không phải tất cả cha mẹ của một đứa trẻ phải là một. Ngay cả khi DOM sâu, nó sẽ chỉ nhìn vào một nút trên mỗi cấp chứ không phải nhiều nút trong kết hợp RTL. Là dễ dàng hơn / nhanh hơn để đánh giá các bộ chọn CSS LTR hoặc RTL?
#foo
bộ chọn sẽ cần khớp với tất cả các nút đó. jQuery có tùy chọn nói rằng $ ("# foo") sẽ luôn trả về chỉ một phần tử, vì chúng xác định API của riêng chúng bằng các quy tắc riêng. Nhưng các trình duyệt cần triển khai CSS và CSS cho biết phải khớp mọi thứ trong tài liệu với ID đã cho.
querySelectorAll
). Trong các trường hợp khác, Sizzle được sử dụng. Sizzle không khớp với nhiều ID nhưng QSA thì có (AYK). Đường dẫn được thực hiện tùy thuộc vào bộ chọn, ngữ cảnh và trình duyệt và phiên bản của nó. API truy vấn của jQuery sử dụng cái mà tôi đã gọi là "Cách tiếp cận gốc, cách tiếp cận kép". Tôi đã viết một bài báo về điều đó, nhưng nó là xuống. Mặc dù bạn có thể tìm thấy ở đây: fifbelow.ca/hosted/dhtmlkove/JavaScript-Query-Engines.html