微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么:link伪类打破了预期的CSS特异性规则?

据我所知,CSS specificity rules表明伪类具有与标签选择器相同的权重.所以像“div p a”这样的选择器比“a:link”更具体.

但是,正如以下测试案例所示,情况似乎并非如此.为什么链接是红色的?

<!DOCTYPE HTML>
<html>
<head>
    <title></title>
    <Meta charset="UTF-8">

    <style type="text/css" media="screen">
        a:link { color: red; }
        div p a { color: green; }
        div.foobar p a { color: green; }
    </style>
</head>
<body>
    <div>
        <p>
          <a href="http://somecrazyurlwierdthing.com">A link... why is it red?</a>  
        </p>
    </div>

    <div class="foobar">
        <p>
          <a href="http://somecrazyurlwierdthing.com">But it turns green when you add a class selector.</a>  
        </p>
    </div>
</body>
</html>

编辑示例以包含“div.foobar p a”选择器.

解决方法

链接的规范声明伪类(在这种情况下为链接)具有比元素名称更高的特异性.确切地说,使用a-b-c-d格式,您的三个选择器如下:
a-b-c-d
0 0 1 1
0 0 0 3
0 0 1 3

您的混淆可能来自您使用术语“伪选择器”,它无法识别伪类之间的区别,例如:链接和伪元素,例如:first-line.

原文地址:https://www.jb51.cc/css/214873.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。