2011-12-20 45 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