CSS 关于 选择器的优先级(重点)

8 篇文章 0 订阅

CSS 关于 选择器的优先级(重点)


一、权重规则💊

如果 通过 不同的选择器,找到了同一个元素,并且各选择器设置了不同的样式,那么浏览器应该听谁的呢?
那就需要根据 各选择器的权重 来说的算

权重越高,优先级越高

小生不才,这里我随便画了张图,选择器权重规则如下:
权重图


二、标签选择器

标签选择器的权重值为 1

简单演示
HTML

<span>选择器的优先级</span>

CSS

span{
    color: orange;
}

标签一
权重相同

Q: 如果指定了两个同样的 标签选择器 ,也就是权重值相同的情况下,那个优先级更高?

HTML代码会从上往下执行,在权值相同的情况下,后面的选择器 会覆盖 前面相同选择器 所设置的样式

span{
    color: orange;
}
span{
    color: teal;
}

标签二

适用于 下方内容 所有权重相同的选择器

三、类选择器

类选择器的权重值为 10

HTML

<span class="active">选择器的优先级</span>

CSS

span{				/* 标签选择器 */
    color: orange;
}
.active{			/* 类选择器 */
    color: tomato;
}

类选择器
10(类选择器) > 1(标签选择器) , 理所当然的 类选择器 优先级更高


四、ID选择器

ID选择器的权重值为 100

HTML

<span id="span1" class="active">选择器的优先级</span>

CSS

span{				/* 标签选择器 */
    color: orange;
}
.active{			/* 类选择器 */
    color: tomato;
}
#span1{				/* ID选择器 */
    color: purple;
}

ID选择器
100(ID选择器) > 10(类选择器) > 1(标签选择器) ,这里 ID选择器 优先级更高


五、内联样式

ID选择器的权重值为 1000

HTML

<span id="span1" class="active" style="color: skyblue">选择器的优先级</span>

CSS

span{				/* 标签选择器 */
    color: orange;
}
.active{			/* 类选择器 */
    color: tomato;
}
#span1{				/* ID选择器 */
    color: purple;
}

内联样式
使用内联样式,比 上面三种选择器的优先级 都高

1000(内联样式) > 100(ID选择器) > 10(类选择器) > 1(标签选择器)


六、!important 方法

!import 方式相当于强制让样式生效,其权重值为 无人可敌 的10000,优先级最高,但是不推荐使用这种方式,容易造成结构混乱,大量使用 !import 的代码难以维护

HTML

<span id="span1" class="active" style="color: skyblue">选择器的优先级</span>

CSS

span{				/* 标签选择器 */
    color: orange !important;
}
.active{			/* 类选择器 */
    color: tomato;
}
#span1{				/* ID选择器 */
    color: purple;
}

!important


七、计算权重📐

计算权重值,无非就是数数,数选择器的数量,然后与权重值 一 一对应加起来
权重越高,优先级越高

讲了那么多,那如果是复杂点的选择器,又怎么去判断权重值呢?

HTML

<div id="div1" class="top">
    <div id="div1-1" class="box_1">
        <span id="span1" class="active">选择器的优先级</span>
    </div>
</div>

CSS - 1

.top{
    width: 1226px;
    margin: 20px auto;
}
span{
    font-size: 16px;
    font-weight: bold;
}
div .box_1 span{
    /*
    数数:两个标签选择器,一个类选择器
    权重:1 + 10 + 1 = 012
    */
    color: teal;
}
.top .box_1 span{
    /*
    数数:两个类选择器,一个标签选择器
    权重:10 + 10 + 1 = 021
    */
    color: purple;
}

根据计算后的结果,021 > 012 ,字体颜色为 紫色
紫色
CSS - 2

#div1 .box_1 .active{
    /*
    数数:一个ID选择器,两个类选择器
    权重:100 + 100 + 10 = 201
     */
    color: gold;
}
.top #div1-1 span{
    /*
    数数:一个类选择器,一个ID选择器,一个标签选择器
    权重:100 + 10 + 1 = 111
     */
    color: green;
}
#div1 #div1-1 #span1{
    /*
    数数:三个ID选择器
    权重:100 + 100 + 100 = 300
     */
    color: hotpink;
}

根据计算后的结果,300 > 201 > 111 ,字体颜色为 粉色
粉色

示例总归是示例,自己动手去尝试、探索,才有所成


相关博客💗

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值