CSS选择器优先级

214 阅读2分钟

在我们进行布局的过程中,选择器的层级越来越多,经常会导致我们写的样式,不生效。就是在f12工具里选中后,样式有,但是被划了横线。

1. 基础选择器的优先级

标签选择器、类选择器、id选择器
当选择器相同时,处于样式的下面的样式优先级更高。

div {
  color: red;
}

/* 下面优先级更高 */
div {
  color: blue;
}

如果选择器不同,选择器之间有优先级的概念。
标签选择器 < 类选择器 < id选择器

着重度

我们可以用着重度来表示选择器的优先级

选择器着重度
标签选择器1着重都只是一个自己定义的值,这个值并非是 11 个标签选择器就比一个类选择器优先级高
类选择器10
id选择器100

基于复杂选择器时,我们着重度的计算就需要通过值进行相加得到新的着重度,值越大优先级越高。

<div class="box">
  <div class="item">
    <span class="text"> 文字</span>
  </div>
</div>
/* 10 + 10 + 10 = 30 */
.box .item .text {}

/* 10 + 10 + 1 = 21 */
.box .item span {}

/* 10 + 1 + 10 = 21 */
.box div .text {}

让大家了解优先级概念,就是为了告诉大家,如果遇到
image.png
这种情况,我们要考虑我们的选择器优先级是不是太低了。

行内样式

我们平时不会写的样式,是给js使用的,行内样式

<div style="color: red;"></div>

行内样式优先级要比id还要高。可以理解行内样式的着重度是1000

!important

如果我们写的样式想要在任何时候都不被覆盖,可以给属性后添加!important。这个东西可以无视选择器优先级,直接把对应属性优先级提高到最大,可以理解为着重度为10000

选择器 {
  color: red !important;
  font-size: 12px !important;
}

注意!!!!!!慎用!important 因为优先级太高。

优先级大小

标签选择器 < 类选择器 < id选择器 < 行内样式 < !important