2012-03-05 97 views
0

可能重複:
why don't css resets use '*' to cover all elements?* VS HTML,身體,DIV,跨度大,小程序,對象,IFRAME ...等

目前我使用:

*{ 
    margin:0; 
    padding:0; 
} 

但我不確定人們爲什麼繼續使用:

html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, font, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td { 
    margin:0; 
    padding:0; 
} 

爲什麼大多數網站(包括這個網站)使用第二種方法有什麼特別的原因?必須有一個非常好的理由來增加這樣的CSS文件大小

+0

@sandeep不,不是。這是問什麼時候使用'*',而不是爲什麼要使用'html,body,div,...'而不是它。 – 2012-03-05 18:30:27

+0

@sandeep:不,這個問題並沒有要求在CSS重置中使用長鏈型選擇器。 – BoltClock 2012-03-05 18:30:33

+2

@RobW:那篇文章說'它適用於XUL代碼的CSS,不適用於通用HTML頁面;請參閱主要的CSS部分以獲取有關通用CSS的信息。# – 2012-03-05 18:31:29

回答

2

我實際上不同意大多數Web開發人員製作一長串元素選擇器。事實上,Web開發人員對於重置CSS的最佳方式都有不同的看法。

例如,「的黎波里重置」使用通用選擇器*。

本文只詳細介紹幾種重置CSS的方法。

http://sixrevisions.com/css/a-comprehensive-guide-to-css-resets/

一個原因是更具體的,我認爲是性能上面所說的答案(雖然現代瀏覽器時下相當快的解析CSS)。此外,如果需要的話,開發人員也可以更具體。例如,某些CSS屬性(如border-collapse)僅適用於特定類型的元素。

-1

這是一個性能問題。我強烈建議您閱讀Steve Souders的工作,他在高性能前端方面做了大量的基準測試和分析工作。實質上,瀏覽器必須在使用*運算符時進行大量的DOM挖掘和分析,而如果明確指定運算符則不必這樣做。

這與在SQL查詢中執行SELECT *與執行SELECT id非常相似。如果您執行SELECT *,則在數據庫查找列名時會有額外開銷。與此相同的東西。

有關史蒂夫·蘇德斯(Steve Souders)在此作品的一個例子,請閱讀this

+1

如果您推薦閱讀某些內容,請鏈接到它! – 2012-03-05 18:28:06

+0

或者你可以使用谷歌.... – christophmccann 2012-03-05 18:31:01

+3

軼事和統計證據表明,堆棧溢出問題的一半不使用谷歌,所以他們將在這裏的SOL。 – BoltClock 2012-03-05 18:32:11