CSS reset
CSS reset
什么是CSS-reset
CSS-reset是指在开发一开始就将浏览器的默认样式全部去掉,更准确说就是通过重新定义标签样式。“覆盖”浏览器的CSS默认属性。最最简单的说法就是把浏览器提供的默认样式覆盖掉!这就是CSS reset。
为什么要进行CSS-reset
在HTML标签在浏览器里有默认的样式,例如 p
标签有上下边距,strong
标签有字体加粗样式,em
标签有字体倾斜样式。不同浏览器的默认样式之间也会有差别,例如ul
默认带有缩进的样式,在IE下,它的缩进是通过margin
实现的,而Firefox下,它的缩进是由padding
实现的。在切换页面的时候,浏览器的默认样式往往会给我们带来麻烦,影响开发效率。同时,因为浏览器的品种很多,每个浏览器的默认样式也是不同的,比如标签,在IE浏览器、Firefox浏览器以及Safari浏览器中的样式都是不同的,所以,通过重置button
标签的CSS属性,然后再将它统一定义,就可以产生相同的显示效果。
html标签默认样式
1 | li { display: list-item }/*默认以列表显示*/ |
浏览器默认样式
1.页边距
IE默认为10px
,通过body
的margin
属性设置
FF默认为8px
,通过body
的padding
属性设置
要清除页边距一定要清除这两个属性值
代码如下:
1 | body { |
2.段间距
IE默认为19px,通过p的margin-top属性设置
FF默认为1.12em,通过p的margin-bottom属性设
p默认为块状显示,要清除段间距,一般可以设置
代码如下:
1 | p { |
3.标题样式
h1~h6默认加粗显示:font-weight:bold;
。
默认大小请参上表
还有是这样的写的
代码如下:
1 | h1 {font-size:xx-large;} |
各大浏览器默认字体大小为16px,即等于medium,h1~h6元素默认以块状显示字体显示为粗体,
要清除标题样式,一般可以设置
代码如下:
1 | hx { |
4.列表样式
IE默认为40px
,通过ul
、ol
的margin
属性设置
FF默认为40px
,通过ul
、ol
的padding
属性设置dl
无缩进,但起内部的说明元素dd
默认缩进40px
,而名称元素dt
没有缩进。
要清除列表样式,一般可以设置
代码如下:
1 | ul, ol, dd { |
5.元素居中
IE默认为text-align:center;
FF默认为margin-left:auto;margin-right:auto;
6.超链接样式a
默认带有下划线,显示颜色为蓝色,被访问过的超链接变紫色,要清除链接样式,一般可以设置
代码如下:
1 | a { |
7 鼠标样式
IE默认为cursor:hand;
.
FF默认为cursor:pointer;
.该声明在IE中也有效
8 图片链接样式
IE默认为紫色2px
的边框线
FF默认为蓝色2px
的边框线
要清除图片链接样式,一般可以设置
1 | img { |
一份CSS-reset代码
1 |
|
到底要不要用CSS-reset
那些所谓的需要重置的标签
我现在问您一个问题,在您制作的或参与开发的页面中,h1~h6标签您使用了几个,我想不可能全部都使用吧,使用三种类型的标题标签就不多了。您有必要对h1~h6所有标签都使用margin
的清除吗? OK,我们现在换个角度思考,假如我们没有对h1~h6标签设置{ margin:0; }
的重置怎么办?从SEO的角度讲,一个页面最多只能出现一个h1标签,所以,显然,h1标签的CSS reset完全没有必要,页面什么地方用就设置相应的样式,只要你记住,h1标签是有个默认的margin-top
与margin-bottom
值的,所以,我们就可以由这样的属性:
1 | h1{margin:10px 0 0;} |
对比下CSS reset下的使用:
1 | h1, h2, h3, h4, h5, h6{margin:0;} |
使用CSS reset不仅文件大小增加了,CSS代码属性也发生了重置,CSS渲染也增加了。显然不及没有CSS reset来的高效。我们将这些标签重置,在后面的css中很大程度上又要重新设置它,这反而增加了浏览器的渲染,与其这样,还不如在使用它的地方直接将它设定到合适的值,这样不仅达到了效果,反而减少了渲染。回过来,就算有一些差异,为何非得在头部CSS reset的位置统一呢?当需要的时候,再设置,反而更合理,更高效!
总结
对于CSS-reset,我也觉得没有太大的使用必要,在开发过程中,开发者只要熟悉各个标签的默认样式,对于需要重新设置的属性在合适的地方显式的设置。在学习过程中渐渐熟悉在不同浏览器中表现有所不同的标签,并且合理的设置属性值就可以了。