Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

关于 CSS Reset

  当接手一个项目的时候,要是没有看其中的 CSS Reset 部分,就可能踩到很多坑。也许 CSS Reset 确实可以弥补一些原生的不足,但我还是绝对应该尊重规范,尊重历史。即便规范是很烂的,但至少有个规范在,可以让开发者知道每个属性的默认值是什么。
  我的建议是,不要全局重置原生的 CSS 默认值。即便需要重置,也应该是一个 normalize 之类的东西,用于将非标准浏览器的默认值转换成标准。
  我经常在布局中使用 DL/DT/DD,而且会习惯性地给 DD 设置 margin: 0,因为 DD 有默认 40px 的 margin。可是很多 CSS Reset 都是全局将所有元素的 margin 设为 0 的,于是我写的这条规则就多余了。
  之前看到经常有人喷 * { margin: 0; padding: 0; } 的,但喷的却是性能问题。然后给了一个更糟糕的规则:一坨标签名 { margin: 0; padding: 0; }。实际上它们的性能并没有什么差异,而后者可能因为规范的版本迭代而遗漏新标签。
  这个规则是该喷(虽然我以前也这么用),但喷的不该是性能,而是不该无故重置全局的默认样式。我就经常会依赖 DT 标签在垂直方向的默认 marign,因为这恰好是我想要的,但在一些 UI 框架中还需要手动去重新设置它。还有更典型的例子就是 UL/OL/LI,这组标签也经常用于布局,所以一些 UI 框架中将它们的 list-style 置为了 none,于是每当我需要使用这些列表默认的序号时都需要手动重新设置。
  既然不希望元素有 margin,那别用带 margin 的元素不就得了?全局使用 DIV + SPAN 也总比把所有元素都变成 DIV 和 SPAN 强(虽然全局使用 DIV + SPAN 我也是强烈反对的)。把原本有 margin 的元素重置为 0,然后又写个 margin 把它覆盖回来,这实在太难受了。
  另外不要和我谈什么语义化 HTML,反正不久的将来在 Web Components 普及后可能会有一大波自定义标签泛滥潮,到时候语义什么的会全被无视掉,这才是真正的灾难吧。(但愿我不要成为预言家)
网名:
3.80.32.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^