前言
之前在梳理css常用选择器的时候说过,选择器是不会被覆盖,但是不同选择器里的相同属性的值是存在覆盖关系。这说明,选择器有存在优先级。那问题来了,那么多的选择器,到底是谁覆盖谁呢?这是下面要讲的内容
硬记选择器优先级
很多人一开始的时候硬记选择器优先级
规则如下:
!important > 行间样式 > ID > class | 属性 > 标签选择器 | 伪类选择器 > 通配符选择器
咋一下,可能觉得这什么东西。其实这个也有一个规律:一般而言,选择器越特殊,它的优先级越高。也就是选择器指向的越准确,它的优先级就越高。
记住上面的可以解决大多数问题,但是解决不了所以的问题,特别是一些非常复杂的选择器带来的优先级问题。那怎么办呢?
这需要你来了解CSS更深入的东西,选择器权重
选择器权重
各个选择器的权重如下:
- !important
Infinity - 行间样式
1000 - ID选择器
100 - class类选择器 | 属性选择器
10 - 标签选择器 | 伪类选择器
1 - 通配符选择器
0
实际,权重表示的就是选择器优先级。css将各个简单的选择器对应的“重要度”用一个数值来表示,我们叫它权重值,
复杂选择器(如:父子选择器,直接子元素选择器,并列选择器),只要写在同行的选择器,权重值等于各个简单的选择器的权重相加。当出现属性覆盖时,权重值高的覆盖权重值底的。
注意:权重的数的进制并非10进制,有人说是256进制
以上关于选择符的优先级的相关内容