CSS选择器优先级

307 阅读1分钟
关于CSS选择器优先级这个问题,首先,我们要知道在没有设置样式的情况下,
会有浏览器默认样式,例如Chrome浏览器默认字体font-size为12px;
其次子元素会继承父元素的样式。

CSS选择器的优先级分情况讨论

1.在单个选择器直接选中的情况下,如:p {font-size: 20px;}

  • 选择器的优先级顺序为:id选择器 > 类(伪类)选择器 > 标签(伪元素)选择器 > 通配符*(兄弟/子元素选择器)> 继承样式 > 浏览器默认样式

2.间接继承的情况下,如下

    <style>
       .grandparent{
           font-size: 30px;
       }
       .parent{
           font-size: 18px;
       }
       /* p {
           font-size: 15px;
       } */
    </style>
    

    <div class="grandparent" style="width: 200px;height: 200px;">
        祖父
        <div class="parent">
            父亲
            <p>子元素</p>
        </div>
    </div>

css优先级.png

  • 在间接选中的情况下,若子元素没有设置该属性,则会继承离该子元素最近的祖先元素的样式,简而言之,就近原则。
  • 当然,如果该子元素设置了该属性,则采用该属性值,直接选中 > 间接继承

3.在多个选择器一起使用时

则比较他们的权重值之和,采用较大的权重的样式, 各选择器的权重值如下:

  • !important的权重无限大(理论上)
  • id选择器权重:1000
  • 类选择器权重:100
  • 标签选择器权重:10
  • 通配符权重: 1

以上的数值并非十进制,例如通配符的权重“1”为256

    <style>

       #id {
           background-color: red;
       }

       #id,.first {
           background-color: skyblue;
       }
       
    </style>
    <div id="parent" class="first" style="width: 200px; height: 200px;"></div>

id选择器+类选择器的权重 > id选择器,则该元素为天蓝色。

多个选择器.png

4.另外,在优先级相同的情况下,写在后面的会覆盖前面的样式

相信看完以上内容,对css选择器优先级的顺序应该可以掌握了。