如果仅仅使用HTML来创建一个页面,没有使用任何的CSS样式。当你打开浏览器渲染这个页面的时候,浏览器是如何知道将超链接显示为蓝色的文字并且带有一个下划线?为什么在IE浏览器中默认的H1文字的margin
是14像素的,而在Firefox浏览器中是0.67em呢?
这些问题的答案是User Agent样式。UA样式是浏览器内置的样式表文件。每一个浏览器都有它自己的UA样式表,在浏览器没有没有被告知使用其它样式表的情况下,这个UA样式就是渲染页面的样式表。
告诉浏览器使用站点样式表的方法是通过使用内置或外链的样式表(通过<link>
标签),这样浏览器将会使用站点样式表覆盖UA样式表。这时候浏览器会做成下面简单的决定:
- 如果新的样式表样浏览器的UA样式表规则冲突,那么将会使用新的样式表来渲染页面。
- 任何在站点样式表中没有指定的样式,都会被假定使用浏览器的UA样式规则。
由于当前众多的浏览器厂商,各自有自己不同的UA样式表,导致前端开发者们为了使各个CSS属性在不同的浏览器中表现一致而编写庞大的CSS reset样式。CSS重置样式表使用到页面中,会有效的消除UA样式表对页面的影响。
UA样式表的好处是开发者可以放心的编写自己的CSS样式,而不必担心某些属性没有书写而使浏览器不知道该如何进行渲染。你可以在iecss.com查看IE浏览器的UA样式表,Opera浏览器的UA样式表可以在这里查看。要查看Firefox浏览器的UA样式规则也十分简单,在Firefox浏览器的地址栏上输入:resource://gre-resources/html.css,回车后就可以看到。
在CSS3中,对UA样式表的使用做了一些调整,使UA样式表对开发者更加友好。例如下面的例子:在一个<div>
中放置一个<p>
段落。
<div style="color: red;"> <p>这是一些<span>红色</span>的文字。</p> </div>
段落文字的颜色继承自它的父元素<div>
,是红色的。如果希望段落中<span>
的文字变为黑色,我们可以有两种选择。传统的做法是:
<div style="color: red;"> <p>这是一些 <span style="color: #000;">红色</span>的文字。</p> </div>
使用CSS3我们可以像下面这样做:
<div style="color: red;"> <p>这是一些 <span style="color: initial">红色</span>的文字。</p> </div>
initial
属性是指将一个属性重置回默认的UA样式。这个方法在你需要否定某些样式的时候特别有用。
div { border: 3px dotted green; } div.special { border: initial; } /*通过“special”重置div的边框回UA样式*/
注意,因为这是CSS3属性,在不同的浏览器中支持initial
属性的情况也不相同。Chrome 和 Safari支持这个属性,不需要厂商前缀,Firefox浏览器需要使用–moz
前缀,IE浏览器不支持这个属性。