Css选择器优先级

问题

写Css实例过程中发现一个小问题
html代码如下

<div class="container">
        <a class="active" href="#">主页</a>
        <a href="#">新闻</a>
        <a href="#">联系方式</a>
        <a href="#">关于我们</a>
    </div>

    <div style="padding-left:16px">
        <h2>顶部导航实例</h2>
        <p>信息内容..</p>
    </div>

Css部分代码

.container a:hover{
    background-color: #ddd;  //灰色
    color: black;
}
.container a.active{
    background-color: #4CAF50;  //绿色
    color: white;
}

页面如图
在这里插入图片描述
当鼠标悬浮到四个a标签时,应该变为灰色,但是悬浮在绿色a标签时不变色,发现是选择器优先级问题。

Css优先级

Css优先级可以分为六个等级,由0到5

0级

通配选择器、选择符和逻辑组合伪类

*
+ > ~
:not() 

1级

标签选择器的优先级是 1

body{}

2级

类选择器、属性选择器和伪类

.container
[text]
:hover

3级

ID 选择器

#id

4级

内联样式

<div style="padding-left:16px"></div>

5级

!important

计算规则

每一个选择器都对应一个具体的数值,数值越大优先级越高, CSS 语句优先渲染。如果数值相同则靠后的渲染
出现一个 0 级选择器,优先级数值+0
出现一个 1 级选择器,优先级数值+1
出现一个 2 级选择器,优先级数值+10
以此类推

问题原因

如问题部分
Css代码

.container a:hover{
    background-color: #ddd;
    color: black;
}
.container a.active{
    background-color: #4CAF50;
    color: white;
}

hover部分选择器为一个类加一个伪类
active下部分选择器为两个类
优先级数值相同
active部分靠后
active部分渲染
所以悬浮不会变为灰色

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值