选择器总的来说可以分为三类(行内样式和!important不考虑)

分别用【a,b,c】来表示

其中a,表示:一个选择器中ID选择器的个数。

其中b表示:一个选择器中【类,伪类,属性】选择器的个数。

其中c表示:一个选择器中【元素、伪元素】选择器的个数。

当出现混合选择器时,就可以按照上述原则来进行计算。

计算原则为:当abc都有时,a的权重最高,

当第一位a的数量相同时,比如都有1个选择器,那么就看下一位b的个数【类,伪类,属性】,

同理,当第二位b的数量相同时,比如都有两个类或伪类或属性,或者总个数为2,那么就来到第三位c的判断。

看【元素、伪元素】的个数,谁多就是谁的优先级高,如果个数还是相同,就遵循后来者居上原则(就是谁最后写就按照谁的样式)。

一开始说了行内样式和!important不考虑,说明他们不遵循上面的规则。

首先,一旦出现行内样式,不管你上面的a,b,c的个数有多少个,都以行内样式为准,除非行内样式有的没有设置。

而!important又是另一个特殊,它是最高的,!important>行内样式,当然了,上面的,a,b,c,也肯定不如它,一旦给某一个元素样式中书写了!important,就以它的样式为准!!!