Hướng dẫn which selector is faster in css? - bộ chọn nào nhanh hơn trong css?

17 tháng 9 năm 2011

Được viết bởi Wizardry trên CSS.CSS Wizardry.

Mục lục
  1. Bộ chọn CSS
    1. Kết hợp các bộ chọn
  2. Bộ chọn chính
  3. Các bộ chọn quá mức
  4. Tất cả điều này có thực sự cần thiết không?
    1. Nhưng mà
    2. Thêm về hiệu quả của bộ chọn CSS

CSS hiệu quả không phải là một chủ đề mới, cũng không phải là chủ đề mà tôi thực sự cần phải bao quát, nhưng đó là một thứ gì đó mà tôi thực sự quan tâm và đã để mắt đến ngày càng nhiều hơn kể từ khi làm việc tại Sky.

Rất nhiều người quên, hoặc đơn giản là don nhận ra rằng CSS có thể vừa hiệu suất vừa không hoạt động. Điều này có thể dễ dàng được tha thứ tuy nhiên khi bạn nhận ra rằng bạn có thể ít, ERR, nhận ra, CSS không hoạt động như thế nào.

Các quy tắc này chỉ thực sự áp dụng cho các trang web hiệu suất cao trong đó tốc độ là một tính năng và 1000 phần tử DOM có thể xuất hiện trên bất kỳ trang nào. Nhưng thực tiễn tốt nhất là thực hành tốt nhất, và nó không quan trọng cho dù bạn đang xây dựng Facebook tiếp theo hay một trang web cho người trang trí địa phương, nó luôn luôn tốt khi biết

Bộ chọn CSS

Kết hợp các bộ chọn

Bộ chọn chính

Các bộ chọn quá mức

  1. Tất cả điều này có thực sự cần thiết không?
  2. Nhưng mà
  3. Thêm về hiệu quả của bộ chọn CSS
  4. CSS hiệu quả không phải là một chủ đề mới, cũng không phải là chủ đề mà tôi thực sự cần phải bao quát, nhưng đó là một thứ gì đó mà tôi thực sự quan tâm và đã để mắt đến ngày càng nhiều hơn kể từ khi làm việc tại Sky.
  5. Rất nhiều người quên, hoặc đơn giản là don nhận ra rằng CSS có thể vừa hiệu suất vừa không hoạt động. Điều này có thể dễ dàng được tha thứ tuy nhiên khi bạn nhận ra rằng bạn có thể ít, ERR, nhận ra, CSS không hoạt động như thế nào.
  6. Các quy tắc này chỉ thực sự áp dụng cho các trang web hiệu suất cao trong đó tốc độ là một tính năng và 1000 phần tử DOM có thể xuất hiện trên bất kỳ trang nào. Nhưng thực tiễn tốt nhất là thực hành tốt nhất, và nó không quan trọng cho dù bạn đang xây dựng Facebook tiếp theo hay một trang web cho người trang trí địa phương, nó luôn luôn tốt khi biết
  7. Bộ chọn CSS sẽ không mới đối với hầu hết chúng ta, các bộ chọn cơ bản hơn là loại (ví dụ: div), ID (ví dụ: #header) và lớp (ví dụ: .tweet).
  8. Những cái không phổ biến hơn bao gồm các lớp giả cơ bản (ví dụ: :hover) và các bộ chọn CSS3 và ‘Regex, phức tạp hơn, chẳng hạn như :first-child hoặc
    #content * {}
    0.
  9. Các bộ chọn có hiệu quả vốn có và để trích dẫn Steve Souders, thứ tự các bộ chọn CSS nhiều hơn đến hiệu quả hơn, như vậy:

Id, ví dụ: #header

Lớp, ví dụ:

#content * {}
2

Loại, ví dụ: div

Anh chị em liền kề, ví dụ:

#content * {}
4

Con, ví dụ:

#content * {}
5

Hậu duệ, ví dụ:

#content * {}
6

Universal, tức là

#content * {}
7

Thuộc tính, ví dụ:

#content * {}
8 These numbers can vary massively between machine and browser. I strongly encourage you to run/play with your own.

Kết hợp các bộ chọn

Bộ chọn chính

Các bộ chọn quá mứcbrowsers read selectors right-to-left.

Tất cả điều này có thực sự cần thiết không?

Nhưng mà

Thêm về hiệu quả của bộ chọn CSS

CSS hiệu quả không phải là một chủ đề mới, cũng không phải là chủ đề mà tôi thực sự cần phải bao quát, nhưng đó là một thứ gì đó mà tôi thực sự quan tâm và đã để mắt đến ngày càng nhiều hơn kể từ khi làm việc tại Sky.

Bộ chọn chính

Các bộ chọn quá mức

Tất cả điều này có thực sự cần thiết không?

Nhưng mà

#content .intro {}

Thêm về hiệu quả của bộ chọn CSS

CSS hiệu quả không phải là một chủ đề mới, cũng không phải là chủ đề mà tôi thực sự cần phải bao quát, nhưng đó là một thứ gì đó mà tôi thực sự quan tâm và đã để mắt đến ngày càng nhiều hơn kể từ khi làm việc tại Sky.

#content * {}

Rất nhiều người quên, hoặc đơn giản là don nhận ra rằng CSS có thể vừa hiệu suất vừa không hoạt động. Điều này có thể dễ dàng được tha thứ tuy nhiên khi bạn nhận ra rằng bạn có thể ít, ERR, nhận ra, CSS không hoạt động như thế nào.

Sử dụng kiến ​​thức này, chúng tôi có thể đưa ra quyết định tốt hơn về việc phân loại và lựa chọn các yếu tố.

Hãy nói rằng bạn có một trang lớn, nó rất lớn và bạn là một trang web lớn, lớn. Trên trang đó là hàng trăm hoặc thậm chí hàng ngàn ____2020. Ngoài ra còn có một phần nhỏ của các liên kết truyền thông xã hội trong một


2 với ID

3; Hãy nói rằng có một Twitter, Facebook, một liên kết Dribbble và Google+. Chúng tôi có bốn liên kết truyền thông xã hội trên trang này và hàng trăm mỏ neo khác bên cạnh.

Do đó, bộ chọn này đắt một cách vô lý và không có hiệu suất lắm:

Điều gì sẽ xảy ra ở đây là trình duyệt sẽ đánh giá tất cả hàng ngàn liên kết trên trang đó trước khi giải quyết bốn bên trong phần


3. Bộ chọn chính của chúng tôi phù hợp với quá nhiều yếu tố khác mà chúng tôi quan tâm.

Để khắc phục điều này, chúng ta có thể thêm một bộ chọn cụ thể và rõ ràng hơn của


5 cho mỗi ____2020 trong khu vực xã hội. Nhưng điều này đi ngược lại những gì chúng ta biết; Chúng tôi biết không đặt các lớp không cần thiết vào các yếu tố khi chúng tôi có thể sử dụng (c) đánh dấu nạc hơn.

Đây là lý do tại sao tôi thấy hiệu suất rất thú vị; Nó có một sự cân bằng kỳ lạ giữa các tiêu chuẩn web thực tiễn tốt nhất và tốc độ tuyệt đối.

Trong khi chúng ta thường có:


với CSS này:

Bây giờ chúng tôi đã có:


với CSS này:

Bây giờ chúng tôi đã có:

Bộ chọn khóa mới này sẽ phù hợp với ít các yếu tố hơn và có nghĩa là trình duyệt có thể tìm thấy chúng và tạo kiểu chúng nhanh hơn và có thể chuyển sang điều tiếp theo.

Và, chúng ta thực sự có thể đưa bộ chọn này xuống xa hơn


7 bằng cách không quá mức độ; Đọc phần tiếp theo cho điều đóthis is the one to keep an eye on.

Vì vậy, để tóm tắt lại, bộ chọn chính của bạn là công cụ xác định xem trình duyệt sẽ phải làm bao nhiêu công việc, vì vậy đây là người để mắt đến.

Các bộ chọn quá mức

Được rồi, bây giờ chúng ta biết một bộ chọn quan trọng là gì, và đó là nơi mà hầu hết các công việc đến từ đó, chúng ta có thể tìm cách tối ưu hóa thêm. Điều tốt nhất về việc có các bộ chọn khóa rõ ràng đẹp là bạn thường có thể tránh các bộ chọn quá mức. Một bộ chọn quá mức có thể trông giống như:

HTML Body .Wrapper #Content A {}

Có quá nhiều điều đang diễn ra ở đây, và ít nhất ba trong số các bộ chọn này hoàn toàn không cần thiết. Điều đó có thể, nhiều nhất là thế này:

Vậy thì sao?

Chà, cái đầu tiên có nghĩa là trình duyệt phải tìm kiếm tất cả các yếu tố


4, sau đó kiểm tra xem chúng có phải là một yếu tố có ID id nội dung, sau đó, cứ thế tiếp tục đến mức lên đến

9. Điều này gây ra cách trình duyệt quá nhiều kiểm tra mà chúng tôi thực sự không cần. Biết được điều này, chúng ta có thể có được những ví dụ thực tế hơn như thế này:

Xuống chỉ:

Chúng tôi biết rằng nếu


4 nằm trong một
div:nth-of-type(3) ul:last-child li:nth-of-type(odd) * { font-weight:bold }
1 thì nó phải ở bên trong

1 để chúng tôi có thể bỏ
div:nth-of-type(3) ul:last-child li:nth-of-type(odd) * { font-weight:bold }
1 ngay lập tức từ bộ chọn. Sau đó, vì NAV có một ID, chúng tôi biết rằng chỉ có một người tồn tại trong trang, vì vậy phần tử mà nó được áp dụng để hoàn toàn không liên quan; Chúng ta cũng có thể bỏ
div:nth-of-type(3) ul:last-child li:nth-of-type(odd) * { font-weight:bold }
4.

Các bộ chọn quá mức làm cho trình duyệt hoạt động chăm chỉ hơn mức cần thiết và sử dụng hết thời gian của nó; Làm cho bộ chọn của bạn nạc và hiệu suất hơn bằng cách cắt các bit không cần thiết.

Tất cả điều này có thực sự cần thiết không?

Câu trả lời ngắn gọn là; chắc là không.

Câu trả lời dài hơn là; Nó phụ thuộc vào trang web mà bạn xây dựng. Nếu bạn làm việc trên danh mục đầu tư tiếp theo của mình thì hãy tìm mã sạch qua hiệu suất chọn CSS, bởi vì bạn thực sự có thể nhận thấy nó.

Nếu bạn đang xây dựng Amazon tiếp theo, nơi các micro giây trong tốc độ trang sẽ tạo ra sự khác biệt thì có thể, nhưng ngay cả khi đó có thể không.but

Trình duyệt sẽ chỉ có được tốt hơn ở tốc độ phân tích CSS, thậm chí cả các điện thoại di động. Bạn rất khó có thể nhận thấy các bộ chọn CSS chậm trên một trang web nhưng

Nhưng mà

div:nth-of-type(3) ul:last-child li:nth-of-type(odd) * { font-weight:bold }

Nó vẫn đang xảy ra, các trình duyệt vẫn phải làm tất cả các công việc mà chúng tôi đã nói, bất kể họ nhanh như thế nào. Ngay cả khi bạn không cần hoặc thậm chí muốn thực hiện bất kỳ điều gì trong số này, đó là điều chắc chắn đáng để biết. Hãy nhớ rằng các bộ chọn có thể tốn kém và bạn nên tránh những cái rõ ràng hơn nếu có thể. Điều đó có nghĩa là nếu bạn thấy mình viết một cái gì đó như:

Sau đó, bạn có thể làm sai.

Bây giờ, tôi vẫn còn là người mới đối với thế giới hiệu quả của bộ chọn vì vậy nếu tôi đã bỏ lỡ bất cứ điều gì, hoặc bạn có bất cứ điều gì để thêm, xin vui lòng đưa nó vào các bình luận!

Thêm về hiệu quả của bộ chọn CSS



Tôi không thể giới thiệu trang web và sách của Steve Souders đủ. Đó là khá nhiều tất cả các khuyến nghị đọc thêm mà bạn sẽ cần. Anh chàng biết công cụ của mình!Buy me a coffee!

Bộ chọn nào là ID hoặc lớp nhanh hơn?

Điều quan trọng cần lưu ý là, mặc dù ID nhanh hơn về mặt kỹ thuật và hiệu suất hơn, nhưng nó hầu như không như vậy.Sử dụng Trình tạo thử nghiệm CSS của Steve Souders, chúng ta có thể thấy rằng bộ chọn ID và bộ chọn lớp cho thấy rất ít sự khác biệt về tốc độ phản xạ.an ID is technically faster and more performant, it is barely so. Using Steve Souders' CSS Test Creator we can see that an ID selector and a class selector show very little difference in reflow speed.

Cái nào là bộ chọn tốt nhất trong CSS?

Bộ chọn lớp là bộ chọn chung hữu ích nhất được sử dụng bởi các nhà phát triển.Bạn có thể xác định bộ chọn lớp bằng thời gian (.) Theo sau là tên lớp.Nó cung cấp kiểu dáng cho tất cả các yếu tố với một thuộc tính lớp được chỉ định. is the most useful common selector used by the developers. You can define the class selector using period (.) followed by the class name. It gives styling to all elements with a specified class attribute.

Bộ chọn CSS có nhanh hơn ID không?

Định vị các yếu tố bằng ID nhanh hơn CSS.Bởi vì: ID của một phần tử cụ thể hơn CSS của một phần tử.. Because : id of an elements is more specific than css of an element.

Bộ chọn CSS hay XPath nhanh hơn?

Ưu điểm của việc sử dụng bộ chọn CSS, nó nhanh hơn XPath.Nó dễ dàng hơn nhiều để học và thực hiện.Bạn có cơ hội tìm thấy các yếu tố của bạn cao.Nó tương thích với hầu hết các trình duyệt cho đến nay.CSS Selector It's faster than XPath. It's much easier to learn and implement. You have a high chance of finding your elements. It's compatible with most browsers to date.