2012-03-12 29 views
6

Liệu nó có ảnh hưởng xấu đến hiệu suất của trình duyệt để gán tên lớp cho thuộc tính lớp css của phần tử nếu lớp không bao giờ thực sự được xác định?Ảnh hưởng của việc áp dụng tên lớp CSS không tồn tại

Nó không phải là bất thường khi sử dụng tên lớp cho bộ chọn với JQuery. Tôi thường sử dụng một lớp mà chỉ được sử dụng để chọn các phần tử và không bao giờ thực sự định nghĩa lớp bất kỳ.

Tôi giả định hầu hết các trình duyệt sẽ tìm định nghĩa lớp css và bạn bằng cách nào đó có thể rút ngắn tìm kiếm nếu kiểu được xác định?

Tôi hiểu rằng các kiểu CSS được biên dịch cùng nhau trước khi các phần tử trang được hiển thị. Đây là lý do tại sao điều quan trọng là giữ tất cả các định nghĩa CSS lại với nhau và không chia chúng với các thẻ script vì nó khiến hầu hết các trình duyệt biên dịch lại CSS mỗi khi chúng được xen kẽ với các định nghĩa khác. Hàm ý của điều này có thể đủ nghiêm trọng để cho phép trang hiển thị trước khi áp dụng kiểu.

Tuy nhiên, trên thực tế, tôi đoán sự khác biệt hiệu suất giữa việc xác định hoặc không xác định lớp CSS là không đáng kể nếu có.

+0

Tôi không chắc chắn về hiệu ứng trong việc không định nghĩa một lớp, tôi đã sử dụng một lớp rõ ràng với Jquery giống như cách bạn đang đề cập đến và không bao giờ gặp phải bất kỳ vấn đề nào. Các đầu vào duy nhất tôi có là không có hiệu suất nhưng khả năng sử dụng. Nếu bạn đang sử dụng một IDE như studio trực quan hoặc những người khác, IDE sẽ ném một lỗi nếu lớp đó không bao giờ được xác định và bạn cố gắng sử dụng nó, ngay cả chỉ với Jquery. Câu hỏi tuyệt vời btw. – ityler22

+0

Đã không nghĩ về intellisense ... điểm tốt :) –

+0

Tháng sau..thủ đề này đã đưa ra trong một cuộc họp với người quản lý của tôi. Ông là kỹ thuật nhưng không jquery kỹ thuật..he hỏi .. nếu bạn đang xác định các lớp học để áp dụng cho các yếu tố .. làm thế nào để bạn biết bạn đã xác định/áp dụng các lớp một cách chính xác .. điểm này là, bạn có thể xác định một và chính xác một kiểm soát với một ASP ID, bạn sẽ nhận được một lỗi biên dịch. Tuy nhiên, nếu tôi có trường hợp datepicker Jquery 1 và 2 và cố gắng sử dụng các bộ chọn lớp khác nhau (tức là các ngày tối thiểu/tối đa khác nhau) không có lỗi thời gian biên dịch. Có vẻ rõ ràng, nhưng là một điểm hợp lệ của ông chủ của tôi. –

Trả lời

6

Cách đơn giản nhất để suy nghĩ về vấn đề này là hãy nhớ CSS được áp dụng cho HTML, không phải là HTML gọi selectors CSS.

Khi trình duyệt phân tích tệp CSS, trình duyệt sẽ đọc bộ chọn từ phải sang trái để xem vị trí áp dụng kiểu. Ví dụ .foo ul {} sẽ kiểm tra tất cả các thẻ ul trên một trang và sau đó kiểm tra xem chúng có nằm trong .foo không. Bởi vì nó được phân tích cú pháp theo cách này, các lớp thừa, không được sử dụng trong HTML của bạn không quan trọng. Nó chỉ kiểm tra các id và các lớp được chỉ định trong CSS.

1

Vì thuộc tính lớp là một thuộc tính HTML, nó có thể được chèn vào mà không có vấn đề gì nếu nó không được gọi bởi CSS hoặc Javascript. Nó có thể ngồi đó một cách hạnh phúc một cách vui vẻ mà không có tác dụng phụ. Nó không cần phải được chọn bởi CSS, nó có thể được sử dụng bởi JS một mình.

Bài viết này có thể giúp bạn hiểu thêm:

class (HTML attribute) @ sitepoint.com

Các vấn đề liên quan