css伪类的展现

时间:2021-11-18 01:18:48

常见的伪类选择器
:link :hover :active :visited

如果为以上几个伪类赋予相同css属性名,不同的css属性值

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>css测试</title>
    <style type="text/css">
            a:link { color: yellow; }
            a:hover { color: red; }
            a:active { color: pink; }
          a:visited { color: blue; }
    </style>
</head>
<body>
    <a href="http://www.baidu.com">百度一下你就知道</a>
</body>
</html>

如果按照以上的顺序给a标签的伪类赋值,第一次点击颜色展现是没有问题的,但是当点击过后,第二次再次将鼠标移到标签上面,以及点击的时刻颜色都是没有变化的,这是因为:hover:activevisited覆盖的缘故,那为什么会出现这种情况?

因为:link,:hover,:active,:visited的权重都是0,0,1,0,第一次点击的时候,visited因为还没有触发,所以颜色显示一切正常,第二次点击的时候,visited已经生效,而且他们的权重都是相等的,所以处在最后的visited伪类会将前面的几个伪类的属性值给覆盖掉。那颜色也就会一直是visited的颜色了。

此刻,我们只需将上面代码几个伪类的顺序调换一下,一切就都解决了

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>css测试</title>
    <style type="text/css">
            a:link { color: yellow; }
          a:visited { color: blue; }
            a:hover { color: red; }
            a:active { color: pink; }
    </style>
</head>
<body>
    <a href="http://www.baidu.com">百度一下你就知道</a>
</body>
</html>

因为,访问过的链接默认展示的是:visited伪类的属性值,所以不会被覆盖,而后鼠标移动到链接上,展示的是:hover伪类的属性值,而后点击展示的是:active的属性值,颜色顺序完全正确。