天行健, 君子以自强不息
Sunny's Blog
Title

理解User Agent样式和CSS3 initial属性

这篇blog转载于jquery之家的《理解User Agent样式和CSS3 initial属性》,我会做一些补充。

总结这个知识点是因为我遇到了IE不支持css的initial的问题,所以从根源来理解一下这个问题。

(这两段写的好,直接copy了)如果仅仅使用HTML来创建一个页面,没有使用任何的CSS样式。当你打开浏览器渲染这个页面的时候,浏览器是如何知道将超链接显示为蓝色的文字并且带有一个下划线?为什么在IE浏览器中默认的H1文字的margin是14像素的,而在Firefox浏览器中是0.67em呢?

这些问题的答案是User Agent样式。UA样式是浏览器内置的样式表文件。每一个浏览器都有它自己的UA样式表,在浏览器没有没有被告知使用其它样式表的情况下,这个UA样式就是渲染页面的样式表。

因为各个浏览器的UA style都不一样,所以为了统一style,一般我们写站点样式的时候,会先加一个reset style,我很早之前有一个blog提供了一个reset style

所以我感觉UA style的存在是为了浏览器页面最基本的美化,对developers来说可能没用,但是对一般用户来讲还是有用的,毕竟你不能让纯页面裸着吧。

1.initial属性是干啥的?

这是我最喜欢的一段解释,initial is a value that resets a property back to the default UA style. This can be particularly useful when the style you wish to negate may be, long, complex, or difficult to remember.

注意,因为这是CSS3属性,在不同的浏览器中支持initial属性的情况也不相同。Chrome 和 Safari支持这个属性,不需要厂商前缀,Firefox浏览器需要使用–moz前缀,IE浏览器不支持这个属性。

2.inherit属性是干啥的?

CSS中的每个属性都有一个特定值"inherit",其含义是指定继承父元素的相应属性,使用inherit一方面在代码上能地表明要继承于父元素的样式属性,另一方面也使子元素继承了那些不会被自动继承的属性.假如设计者要使ID为menu的div元素有2px的黑色边框,且具有5px的填充,同时想让其子div元素也具有同样的样式,则可以编写如下规则:

                div#menu{
                  border:2px solid black;
                  padding:5px;
                  background-color:#909090;
                }
                div#menu div{
                  border:inherit;
                  padding:inherit;
                  background-color:#dedede;
                }
            
地势坤,君子以厚德载物