1 CSS3样式表的组成
2 选择器的特殊性
选择性的特殊性由选择器本身的组件决定,特殊性值表示为4各部分,如:0,0,0,0。特殊性值从左往右依次递减。
一个选择器的具体特殊性由以下决定:
(1) 对于选择器的ID属性值,表示为:0,1,0,0;
(2) 对于选择器中的给定的各个类属性、属性选择以及伪类,表示为:0,0,1,0;
(3) 对于选择器中给定的各个元素或伪元素,表示为:0,0,0,1;
(4) 通配符选择器的特殊性表示为:0,0,0,0;
(5) 结合符对选择器的特殊性没有一点贡献;
(6) 内联声明的特殊性表示为:1,0,0,0;
(7) 继承没有特殊性。
注意:
(1)特殊性1,0,0,0大于所有以0开头特殊性的选择器。(数量多时不进位)
(2)选择器的特殊性最终都会授予给其对应的声明。
(3)如果多个规则与同一个元素匹配,而且有些声明相互冲突时,特殊性越大的越占优势。
例如:
(1)div[id= “test”] ->其为一个元素选择器和属性选择器(选择id属性为test),因此其特殊性应该为0,0,1,1。
(2)#test ->其为一个id选择器,其特殊性为0,1,0,0。
3 重要声明
有时,某个声明比较重要,超过了其他所有的声明,CSS2.1将其称之为重要声明。并允许在这些声明的结束分号之前插入 !important 来标志。
注意:必须要准确的放置 !important的位置,否则声明无效。
标志为 !important的声明并没有特殊的特殊性值,不过,要与非重要声明分开考虑。
实际上,所有的重要声明会被浏览器分在一组,重要声明的冲突会在其内部解决。而非重要声明也会被浏览器分在一组,非重要声明的冲突也会在其内部解决。最终,如果一个重要声明与非重要声明冲突了,胜出的总是重要声明。
4 继承
继承(比如color等属性)没有特殊性,甚至连0特殊性都没有。
0特殊性(通配符)都要比无特殊性要强。
5 来源
CSS的来源主要有三种:
(1) 创作人员;(2)读者;(3)用户代理。
声明的权重:(按重要顺序降序排序)
(1) 读者的重要声明;(读者的重要声明可在IE浏览器的辅助功能中导入)
(2) 创作人员的重要声明;(浏览器控制台修改的也是创作人员的声明)
(3) 创作人员的正常声明;
(4) 读者的正常声明;
(5) 用户代理的声明。
6 层叠(最终规则)
(1)先找出所有相关的规则,这些规则都包含一个选择器;
(2)计算声明的优先级:
①先按来源排序;
②再按选择器的特殊性排序;
③最终按顺序进行排序。