2011-07-20 37 views
3

衆所周知,過度使用被認爲是不好實踐的id css規則。有很多關於這個主題的帖子 - 例如,這裏有一個latestcss選擇器引擎的特定實現

在這樣的帖子也經常被提及的是CSS選擇器實際上是由瀏覽器引擎從右到左解析。也就是說,如果我們說,選擇器#每隔div,瀏覽器首先找到所有的div,然後測試它們是否具有這個id。

我的問題包含兩個相關部分。第一部分 - 這是真的嗎?有很多css引擎的實現,既有開源的,也有專有的,如果有人知道這些引擎的任何一個,就會很好,從而揭示了這個主題。問題的

第二部分是 - 如果是真的,如果真的總是從右到左解析CSS規則,所以我們實際上做會這樣呢?我根本不是解析專家,但是定義選擇器的哪一部分更具體(生成較少的輸出)並且不一定從正確的位置開始過濾不是更方便嗎?它太昂貴還是什麼?

+0

嗯,沒有,'#very div'發現'div's並與ID「非常」的元素搜索他們的文檔樹。 – BoltClock

+0

@BoltClock關於你在說什麼css引擎/引擎?此外,還有問題的第二部分) – shabunc

+0

我的觀點是,你很迷惑'div#very'與'#very div'。 – BoltClock

回答

0

Seteve海灣做some tests一段時間了,而他的試驗證實了這一點(至少對測試的瀏覽器),它也顯示性能提升規模。對於6000個DOM元素,使用類vs後代的最大性能提升是200ms(非常顯着),平均值較小(並且方式較不重要)。

這個測試也顯示,雖然有瀏覽器和發動機之間的差異(即有趣最佳性能)的趨勢是相同的。

+0

IE不全然後呢! :) – Treemonkey

+0

@Litek,非常有用的信息,的確,儘管如此,這兩個問題的答案都不是。 – shabunc