继承
子(后代元素)元素会继承父元素的某些CSS属性,通常,跟文字内容相关的属性都能被继承。
那么继承和层叠是如何解决冲突的?先要弄懂属性值的计算过程!
属性值的计算过程
-
渲染的时候是 一个元素一个元素依次渲染,顺序按照页面文档的树形目录结构进行。
-
渲染每个元素的前提条件:该元素的所有CSS属性必须有值。
-
属性计算过程:一个元素,从所有属性都没有值,到所有的属性都有值,这个计算过程,叫做属性值计算过程。
具体计算过程
-
确定声明值:参考样式表中没有冲突的声明,作为CSS属性值
如color, display, font-weight
-
层叠冲突:对样式表有冲突的声明使用层叠规则,确定CSS属性值
- 比较重要性(去掉浏览器默认样式表中冲突的样式)
- 比较特殊性(去掉数值较小的类选择器和元素原则器中冲突的样式)
- 比较源次序(去掉靠前的中冲突的样式)
-
使用继承:对仍然没有值的属性,若可以继承,则继承父元素的值
-
使用默认值:对仍然没有值的属性,使用默认值
特殊的两个CSS取值
- inherit:手动(强制)继承,将父元素的值取出应用到该元素
- initial:初始值,将该属性设置为默认值