css里的:hover为什么不起作用

吴先森
  • 68

最近在学习基础的前端知识,需到了一个问题,请看代码:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>测试</title>
    <style>
        a {
            text-decoration: none;
        }

        a:hover {
            color: coral;
        }

        .nav2 a {
            color: #b0b0b0;
        }
        
    </style>
</head>
<body>
    <div class="nav">
        <div class="nav1">
            <div class="nav2">
                <a href="#">你好</a>
            </div>
        </div>
    </div>
</body>
</html>

这段代码的a:hover没有生效
如果把a:hover放到.nav2 a的后面,那么这个a:hover又生效了。

我理解这是选择器的优先级的问题,但是这里有个疑惑,选择器优先级不应该是出现层叠问题后(比如有两个或以上的选择器选择了这个a:hover)才会计算优先级吗?我这里就一个选择器,为什么也会有这个问题?还是我理解有误?

我到底应该怎么理解这个问题?
谢谢大家。

回复
阅读 324
2 个回答
✓ 已被采纳

我的理解是,.nav a选择器权重是0-0-1-1
未选中a时, a:hover选择器权重是0-0-0-1
选中a时, a:hover选择器权重同样是0-0-1-1,但是此时.nav a选择器是在后面定义的,覆盖了a:hover选择器,所以a:hover选择器还是不生效。
这也是你把a:hover选择器放在.nav a选择器后,a:hover选择器生效的原因。

一个CSS选择器优先级的图

经测试是生效的,并没有出现不生效的情况
image.png

你知道吗?

宣传栏