2013-04-16 82 views
5

我不知道鏈接是否正確。
我說說編碼是這樣的:CSS鏈接性能

html > body > div > ul > li > a{ 
     /*css*/ 
    } 

我和我的一個朋友,誰告訴我,渲染的CSS這樣當編碼CSS是讓瀏覽器性能比較低的交談。
所以這是真的,或者我真的應該只聲明類/ ID的和指定他們?

+3

你應該問他任何證據 – MarcinJuraszek

+0

當範圍更多時,你會迭代許多dom元素。一個好的做法是使用最小範圍,例如按元素ID搜索。 – dinukadev

+0

@約翰遜 - 是的!他可能是一個男人! ; o) – Paul

回答

1

如果你只想要某個元素內,向一個元素,你可以嘗試這樣的事:

#ullID li{ ... } 

通過這樣做,您爲#ullID元素中的li標籤的樣式。如果你想要去得更深,你可以做到這一點,像這樣:

#ullID li a{ ... } 

我會說這將是更快的性能在違背明智的使用:

html > body > div > ul > li > a{ ... } 

希望這有助於:)

3

在我看來,你應該使用最少的選擇規則。處理時間越長,規則越多。

所以是最好的做法是使用類和ID。

另外你上面給的例子,如果你正試圖將CSS應用到所有的標籤,將很好地工作只是

a { 
/* css */ 
} 
+0

這只是一個例子。有時候我有非常大的css-es,而當我僅適用於某個類時,我感到有點困惑,然後我開始像這樣編寫代碼。但是讓我們說我在頁面中有3個ul-s,並且他們每個人都有不同的風格。設置ID-s並指定像這樣#ulID> li和#ulID> li> a是否好? –

7

,你必須以目標你應該只爲特定的你的元素。 使用id是可取的。

最終,雖然這種微觀優化是相當無關緊要的。唯一值得期待的,一旦你已經優化的非常一切其他(壓縮圖像,靜態內容服務,使用CSS精靈,減少資產等)

http://www.stevesouders.com/blog/2009/03/10/performance-impact-of-css-selectors/

+0

+1鏈接到實際的測試數據,而不是像所有其他答案一樣瘋狂地猜測。 – RichieHindle

2

CSS是由瀏覽器從右讀左邊,這意味着在您的示例中,瀏覽器會查找所有<a>,然後查找父代<li>,直到它達到<html>

因此,對於性能而言,這種風格的寫作風格對性能不利。

1

下面是選擇優化的粗糙aproximation:

  1. ID(#myid)
  2. 類(。MyClass的)
  3. 標籤(DIV,H1,P)
  4. 列表項
  5. 相鄰的兄弟(H1 + P)
  6. 列表項子(UL> LI)
  7. 後代(LI一個)
  8. 通用(*) 9.attribute(A [的rel = 「外部」])
  9. 僞類和僞元件(一個:懸停,李:第一)

甲nd在討論SEO時,要記住這些事情。這並不意味着你必須忘記所有這些,只使用類和身份證。 事情是,當你說div #child ul li a img瀏覽器第一次照顧和IMG和看起來,如果它有一個a家長有一個li家長等等。