2011-12-20 85 views
5

我必須建立一些遺留代碼,真的讓我感到the cons of global CSS reset應用全局CSS重置後獲取默認屬性

我有舊foo.css

* {margin:0; padding:0;} 

開始,我用它複製到不同的文件bar.css,調整它太我需要(出與CSS重置),並用它來只在我正在寫的代碼中替換foo.css。我這樣做不用擔心向後兼容網站的舊版本。

現在這是相當繁瑣的:對於全局變化,我必須記住修改這兩個文件。所以,現在我的bar.css正在擴大foo.css,先從:

@import url("style.css"); 

的問題是,現在我也繼承CSS復位。

有什麼辦法(†)帶來的一些元素(標題,列表等)恢復到默認值的margin & padding性能 - 應用復位前的人?

(†)除了手動設置每個屬性回到其初始值,如CSS規範中所定義的。

回答

6

建議值initial用於將屬性設置爲其初始值,而不查找顯式值。但它仍然是草稿階段,很難在任何瀏覽器中實現。

此外,這可能甚至不是你想要達到的。如果我理解正確,你會想要設置例如h2元素的上下邊距爲,瀏覽器默認爲值。我不認爲甚至有任何建議的方式在CSS中這樣做。規範沒有定義瀏覽器默認值。例如,保證金屬性的初始值爲0.默認情況下,標題具有頂部和底部保證金的原因是,瀏覽器至少在概念上應用了瀏覽器樣式表。 CSS規範建議默認瀏覽器樣式表,但不要求一個,瀏覽器可能(實際上)偏離建議。

實際上,給定情況下的最佳鏡頭將檢查CSS 2.1規範的Appendix D並使用給定的值。對於諸如邊距之類的東西,這大多會產生使用瀏覽器默認值的效果。

0

我認爲* {margin: auto}會重置保證金(或h1 {margin: auto},如果只有該元素被重置。),但這不適用於填充。從技術上講,規範是填充爲零,但是,如果瀏覽器實現它,否則,我不認爲會有一種方法來重置它。

1

而不是希望你可以恢復到瀏覽器的默認值,爲什麼不只是設置自己的?

所有你需要做的就是添加全局CSS重置在你的聲明:

* { margin: 0; } 
h1 { margin: 10px 0; } 

h1優先於全局選擇*

這將有助於normalize your CSS