CSS层叠规则(不要再相信权重了)

145 阅读1分钟

层叠规则

样式计算分为四个步骤:

  • 声明 查看默认样式表或者作者样式表中是否声明了样式
  • 层叠:解决样式冲突(优先级、特殊性、源次序)

举例:

  #nav a.link{
        color: blue;
        background-color: red;
      }
  #nav a.link.active{
        color: green;
      }
//这里,color就会导致冲突。而background-color不会引起冲突

优先级:作者样式表!important>默认样式表!important>作者样式表>默认样式表 (user agent stylesheet就是默认样式表)

image-20230613145939442

特殊性:有四个数字(?,?,?,?)

​ 第一个数字: 如果有内联样式style,那么第一个数字为1 优先级最高不需要管其他类选择id选择器的冲突样式

​ 第二个数字:ID选择器的数量

​ 第三个数字: 类选择器属性选择器伪类选择器的总数量。

image-20230613150256363

image-20230613150504725

有一个id选择器,有一个类选择器.link 一个属性选择器[href] 一个伪类选择器。一个元素选择器a

​ 第四个数字:元素选择器伪元素选择器的数量

  • 继承

    继承是有前提条件的,首先是没有声明样式值,其次样式是可以继承的。

inherit 作用:将父元素的对应样式,复制粘贴到对应位置。它并不是继承,只是复制样式,发生在层叠区间。

  .father {
                color: red;
            }
            .son {
                color: inherit; /* 等同于color:red */
            }
  • 默认

所以,开发者只能修改第一、第二步,对于继承和默认是无法直接修改的,只能间接影响