一个样式表中,常常会设定很多不同的样式,比如body{},#id {},div.class p {}等等,对同一个元素在不同的选择器中可能会有不同的设定,到底以谁为准呢?
比如说,如何知道<a>的颜色属性呢?先来了解下浏览器是如何工作的?
- 浏览器收集所有的样式表,这包括作者的,用户的(读者)以及浏览器自带的默认样式表。
- 寻找所有和<a>颜色属性有关的声明。
- 将这些声明按照作者、用户和浏览器的顺序分类。
- 计算每个声明的特殊性分值,在不改变作者、用户和浏览器顺序分类的情况下从大到小排序。
特殊性计算方法:先设定一组起始数字 000
- 第一个数字代表id选择器,一个1分
- 第二个数字代表所有类选择器和伪类选择器,一个1分
- 第三个数字代表元素选择器,一个1分
5. 最后按顺序排列有冲突的声明。没有的话分高的优先级最高。
精简下这个过程,一般来说,选择器越深入详细,优先级越高。