css继承是从一个元素向其后代元素传递属性值所采用的机制。确定应当向一个元素应用哪些值时,浏览器不仅要考虑继承,还要考虑声明的特殊性,另外需要考虑声明本身的来源。这个过程就称为层叠。——《css权威指南》
优先级是决定不同选择器的相同样式规则对同一元素的生效情况,优先级高的将覆盖优先级低的样式规则。而优先级又受到样式来源和选择器特殊性的影响,下面我们一起来了解以下。
一、样式来源
1、行内样式
<h1 style="font-size:12px;color:#000;">我的行间CSS样式。</h1>
2、内联样式
<style type="text/css">
h1{font-size:12px;
color:#000;
}
</style>
3、外部样式
<link rel="stylesheet" href="css/style.css">
行内样式 > 页内样式 > 外部引用样式 > 浏览器默认样式二、特殊性(选择器的特殊性值表述为4个部分,用0,0,0,0表示)
选择器类型 | 权重 |
行内样式 | 1,0,0,0 |
ID选择器 | 0,1,0,0 |
类选择器、属性选择器、伪类选择器 | 0,0,1,0 |
元素(类型)选择器,伪元素(类型)选择器 | 0,0,0,1 |
通用元素选择器、伪类:not选择器、通配符、子选择器、相邻选择器等 | 0,0,0,0 |
三、比较过程
(a). 首先根据选择器类型计算出总权重
(b). 若权重相同则比较来源
(c). 若前两者相同,则后面声明的优先级高。
四、通过!important提高优先级(IE5.5~6不支持)
通过在样式规则后面添加!important关键词,可以将该样式规则提高到最高优先级。