一、先从特殊性说起。
特殊性表现为四个部分,如0,0,0,0.
1. 内联样式声明的特殊性:1,0,0,0;
2. 选择器中的ID属性值:0,1,0,0;
3. 对于选择器中给定的各个类属性值、属性选择(如 tr[id=”totals”])或伪类(如:hover):0,0,1,0;
4. 对于选择器中给定的各个元素(如 h1 p em)和伪元素(如p:first-letter 即段落的第一个字母):0,0,0,1;
5. 通配选择器对一个选择器的特殊性没贡献:0,0,0,0。
6. 继承的值没有特殊性,连0特殊性都没有
二、层叠的一些规则
1.!important的规则的权重要高于没有!important标志的规则。按来源可分为
1.读者的重要声明
2.创作人员的重要声明
3.创作人员的正常声明
4.读者的正常声明
5.用户代理声明
2.按特殊性排序
3.按出现顺序排序,越后出现,权重越大。如果样式表中有导入的样式表,一般认为导入的在前,主样式表在后。由于这种排序顺序,故有推荐的链接样式顺序。一般建议:link-visited-hover-active(变种为LHVA,采用这种样式,只有未访问的会有鼠标的悬停效果,访问过的链接将不再有这种样式)
4.对于同权重的样式表,内联>采用<link>
导入的样式表>位于<style>
之间的样式表>采用@import导入的样式表
注:@import与link区别:
(1)link属于XHTML标签,除了加载CSS外,还能用于定义RSS,
定义rel连接属性等作用;而@import是CSS提供的,只能用于加载CSS;
(2)页面被加载的时,link会同时被加载,而@import引用的CSS会等到页面被加载完再加载;
(3)import是CSS2.1 提出的,只在IE5以上才能被识别,而link是XHTML标签,无兼容问题;