为什么要进行 CSS Reset
目的简单而又粗暴:使CSS样式在各种浏览器下呈现的效果一样。
当年的一个黑魔法:1
* { margin: 0; padding: 0; }
这种粗暴的方式曾经给浏览器带来了很大的负荷,它由曾经的红极一时变成现在不受待见。
后来有了一个更加飘逸的CSS Reset
代码,它是这样写的:1
body, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, pre, code, form, fieldset, legend, input, button, textarea, p, blockquote, th, td { margin: 0;padding: 0; }
更有甚者,将前面一堆CSS选择器换成了几乎所有HTML标签,与上一个黑魔法并无二致。
这里引用一下张鑫旭的吐槽:
- div标签默认有margin值吗?有padding值吗?怎么会想到应用div{margin:0; padding:0;}属性呢?真是画蛇添足,多此一举。
- dt标签有默认的margin与padding值就是0,这里为什么还要使用呢?
- li标签默认有margin值吗?有padding值吗?压根就没有,也不自己测测,还没事找事设置个li{margin:0; padding:0;}属性,真是衰!
- code标签是个属于inline水平的元素,居然也扯到margin与padding的重置,真是好笑。
- 还有,像form, input, button, textarea这样子的表单元素,有margin值吗?有padding值吗?我真是不解!
- fieldset, legend这两个90年代的标签你的网站上使用了吗?使用概率不足1%的标签也拿来重置,我实在无语了。
- 还有th,td这些标签,幸好没有写上table与tr标签,否则我一起痛批一段。
normalize.css是什么?
normalize.css是一个CSS Reset
项目,由necolas发起并维护。
以下部分文字为normalize.css
官网的介绍:
A modern, HTML5-ready alternative to CSS resets
Normalize.css makes browsers render all elements more consistently and in line with modern standards. It precisely targets only the styles that need normalizing.
知乎上有一段针对normalize.css 的评价:
Normalize 相对「平和」,注重通用的方案,重置掉该重置的样式,保留有用的 user agent 样式,同时进行一些 bug 的修复,这点是 reset 所缺乏的。
参考资料
- Normalize.css
- About normalize.css
- 来,让我们谈一谈 Normalize.css
- What is the difference between Normalize.css and Reset CSS?
- Normalize.css 与传统的 CSS Reset 有哪些区别?
- The CSS user agent style sheet and presentational hints
- CSS reset的重新审视 – 避免样式重置
- Reset CSS:只选对的,不选”贵”的
- NEC : 更好的CSS样式解决方案
normalize.css v4.1.1
源码
1 | /*! normalize.css v4.1.1 | MIT License | github.com/necolas/normalize.css */ |