css的权重问题

189 阅读1分钟

什么是css权重

一个元素有多个样式对他进行设置的时候,那么哪个样式会起作用呢?这就需要一个规则计算,这个规则就是权重。谁的权重大,就使用那个样式。 根据w3c的规范,元素分为三个等级:

id选择器(称之为 a等级)

类选择器,属性选择器,伪类(我们称之为b等级)

标签,伪元素(我们称之为c等级)

计算权重

首先比较第一个等级a ,谁的 a 的个数多权重就大。如果 a的个数一样,则比较 b,跟 a的规则一样,谁的b的个数多,谁的权重就大。如果一样在比较 c。一样的规则。

如果最后abc 都一样怎么办,那就比较谁最后写的,一般后面写的会覆盖前面的样式。

 
body div{
    background: blue
}
 
div{
    background: red;
}

div的背景颜色为blue

!important 和 行内样式

除了以上三个等级之外,我们还有另外两个,一个是行内样式,一个是 !important 。

而行内样式 比 ID选择器高一级,!important 比行内样式又高一级。

等级关系

他们的等级关系: !important > 行内样式 > ID选择器 > 类选择器 | 属性选择器| 伪类选择器 > 标签|伪元素