层叠、优先级和继承——这些概念决定着如何将CSS应用到HTML中,以及如何解决冲突。当两种规则同时对相同元素起作用时,样式呈现就会发生冲突。当前元素的有些样式会继承其父元素的样式,也会导致冲突。
优先级
层叠发生时,如果相同元素没有其他特殊设定,不同的规则的优先级将根据顺序决定,越往后的将覆盖之前的规章。
一个选择器的优先级可以说是由四个部分相加 (分量),可以认为是个十百千 — 四位数的四个位数:
千位: 如果声明在 style 的属性(内联样式)则该位得一分。这样的声明没有选择器,所以它得分总是1000。
百位: 选择器中包含ID选择器则该位得一分。
十位: 选择器中包含类选择器、属性选择器或者伪类则该位得一分。
个位:选择器中包含元素、伪元素选择器则该位得一分。
继承
CSS 为控制继承提供了四个特殊的通用属性值。每个css属性都接收这些值。
- inherit:开启继承,元素的样式受父元素影响
- initial:根据浏览器的默认样式决定,如果浏览器没有设定默认样式,且属性父元素开启继承,则相当于inherit
- unset:根据父元素决定