2012-03-12 71 views
6

如果類從未實際定義過,它是否會對瀏覽器的性能造成負面影響:將類名分配給元素的css類屬性?應用不存在的CSS類名稱的影響

爲JQuery選擇器使用類名並不罕見。我通常使用一個只用於選擇元素的類,並且永遠不會在任何地方定義類。

我假設大多數瀏覽器都會查找css類的定義,並且如果樣式已定義,您可以以某種方式使搜索短路?

我的理解是CSS樣式在頁面元素呈現之前一起編譯。這就是爲什麼將所有CSS定義放在一起並且不要將它們與腳本標記分開是很重要的,因爲它會導致大多數瀏覽器在每次與其他定義混合時重新編譯CSS。這可能會嚴重到足以讓頁面在應用樣式之前呈現。

但是,在實踐中,我猜想定義或不定義CSS類之間的性能差異可以忽略不計。

+0

我不確定在沒有定義類的效果,我已經明確地使用了Jquery的類,就像你所指的一樣,並且從未遇到過任何問題。我擁有的唯一輸入是性能和可用性。如果您使用的是像Visual Studio或其他IDE一樣的IDE,如果該類從未定義過,並且您試圖使用它,即使僅使用Jquery,IDE也會引發錯誤。偉大的問題btw。 – ityler22 2012-03-12 05:27:43

+0

沒有想到intellisense ...好點:) – 2012-03-16 13:17:18

+0

幾個月後..這個話題出現在與我的經理會議。他是技術性的,但不是技術jquery ..他問,如果你正在定義這些類適用於元素..你知道你已經正確定義/應用類..他的觀點是,你可以確定一個,正好一個用ASP ID控制,你會得到一個編譯錯誤。但是,如果我有Jquery datepicker案例1和2並嘗試使用不同的類選擇器(即不同的最小/最大日期),則沒有編譯時錯誤。看起來很明顯,但是我的老闆是一個有效的觀點。 – 2012-06-12 02:06:12

回答

6

最簡單的方法去思考,這是要記住,CSS應用到HTML,而不是HTML調用CSS選擇器。

當瀏覽器解析CSS文件時,它從右向左讀取選擇器以查看應用樣式的位置。例如.foo ul {}會檢查頁面上的所有ul標籤,然後檢查它們是否包含在.foo中。因爲它是以這種方式分析的,所以HTML中額外的,未使用的類並不重要。它只是檢查在CSS中指定的ID和類。

1

由於class屬性是一個HTML屬性,因此如果它沒有被CSS或Javascript調用,它可以插入而不會出現任何問題。它可以非常愉快地坐在那裏,沒有任何副作用。它不需要通過CSS選擇,它可以由JS單獨使用。

這篇文章可以幫助您瞭解更多:

class (HTML attribute) @ sitepoint.com