为什么: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.

相关文章

Css3如何实现鼠标移上变长特效?(图文+视频)
css3怎么实现鼠标悬停图片时缓慢变大效果?(图文+视频)
jquery如何实现点击网页回到顶部效果?(图文+视频)
css3边框阴影效果怎么做?(图文+视频)
css怎么实现圆角边框和圆形效果?(图文+视频教程)
Css3如何实现旋转移动动画特效