层叠规则就是当多个样式添加到同一元素时,样式优先级规则,也就是其最终显示的样式。
样式类型可以分为:浏览器默认样式、外部样式(即<link>引用的CSS后缀文件)、内部样式(即写在<style></style>标签内的样式)及内联样式(直接写在style属性内的样式)、用户自定义样式(有些页面会允许用户自定义样式)。
1.浏览器默认样式优先级最低;
2.遇到冲突的属性定义,带!important的比不带!important的优先级高;
3.计算特殊性值,特殊性高的css定义权重要大于有较低特殊性的css定义
选择器的特殊性计算:
(1)对于内联样式,特殊性首位加1,即1,0,0,0。
(2)对于选择器中出现的ID属性值,加0,1,0,0, 有多少个ID值就在第二位加几位。
(3)对于选择器中出现的类属性值,属性选择及伪类,加0,0,1,0,共出现多少个就在第三位加几位。
(4)对于选择器中出现的元素,以及伪元素,加0,0,0,1,共出现多少个就在第四位加几位。
(5)通配符、结合符、继承对特殊性没有任何贡献,即特殊性是0,0,0,0。
4.CSS按来源可分成三种:创作人员(内联+外部+内部)、读者(用户自定义样式)、用户代理(浏览器默认样式);
5.优先级相同,则后者覆盖前者;
*伪元素有::first-line、:first-letter、:before、:after、::selection