我必须构建的一些遗留代码,真的让我觉得
the cons of global CSS reset.
我有一个以foo.css开头的旧版本
* {margin:0; padding:0;}
我曾经把它复制到另一个文件bar.css,调整它我的需要(与CSS重置),并使用它来替换我写的代码中的foo.css.我这样做并不担心与网站旧版部分的向后兼容性.
现在这非常麻烦:对于全局变化,我必须记住修改这两个文件.所以现在我的bar.css正在扩展foo.css,从以下开始:
@import url("style.css");
问题是现在我还继承了CSS重置.
是否有任何方式(†)带来保证金和某些元素(标题,列表等)的填充属性恢复为默认值 – 应用重置之前的值?
(†)除了手动将每个属性设置回其初始值之外,如CSS规范中所定义.
解决方法
建议值
initial用于将属性设置为其初始值,而不查找显式值.但它仍处于草案阶段,很难在任何浏览器中实现.
而且,这甚至可能不是你想要达到的目标.如果我理解正确,你会想要设置,例如h2元素的顶部和底部边距为浏览器默认值.我认为在CSS中甚至没有任何提议的方法.规范未定义浏览器默认值.例如,margin属性的初始值为0.默认情况下,标题具有顶部和底部边距的原因是浏览器至少在概念上应用了浏览器样式表. CSS规范建议使用默认的浏览器样式表,但不要求一个,浏览器可能(实际上)偏离建议.
实际上,在给定情况下的最佳镜头是检查CSS 2.1规范的Appendix D并使用那里给出的值.对于像边距这样的东西,这通常会产生使用浏览器默认值的效果.