在我们进行布局的过程中,选择器的层级越来越多,经常会导致我们写的样式,不生效。就是在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 {}
让大家了解优先级概念,就是为了告诉大家,如果遇到
这种情况,我们要考虑我们的选择器优先级是不是太低了。
行内样式
我们平时不会写的样式,是给js使用的,行内样式
<div style="color: red;"></div>
行内样式优先级要比id还要高。可以理解行内样式的着重度是1000
!important
如果我们写的样式想要在任何时候都不被覆盖,可以给属性后添加!important。这个东西可以无视选择器优先级,直接把对应属性优先级提高到最大,可以理解为着重度为10000
选择器 {
color: red !important;
font-size: 12px !important;
}
优先级大小
标签选择器 < 类选择器 < id选择器 < 行内样式 < !important