为什么不:访问而不是:访问链接?

我看过的每个示例和样式表都使用a:visted来设置链接的样式。除了a:visted具有更高的特异性之外,:visted难道不应该是等效的、更简单的吗

TL;DR:在撰写本文时,你完全正确;a:visted:visted之间没有区别。但是,使用a:visted是将来验证代码的最佳实践。

TL;DR EDIT:截至2016年8月,CSS4工作草案允许其他标签使用:已访问。现在,a:visted:visted之间存在功能上的差异!当心。

对于今天的web开发语言,特别是HTML5和CSS3,您是对的:a:visted:visted在功能上没有区别。现在,请注意:web标准、元素和用户界面协议正在不断发展,这意味着将来可能会引入与:visted兼容的新标签

当CSS中引入:visted时,W3C CSS1规范说:

在CSS1中,锚伪类对“a”以外的元素没有影响。因此,可以从选择器中省略元素类型:
a:link{color:red}=:link{color:red}

然而在CSS2规范中,:visted伪类的行为不限于a标记:

文档语言确定哪些元素是超链接源锚定。例如,在HTML4中,链接伪类应用于具有“href”属性的a元素

这意味着由文档语言和浏览器决定哪些元素与:visted兼容。虽然当前的行业标准规定,对于HTML,只有具有href属性的a元素符合条件,但这很可能会在以后发生变化

编辑,2016年8月:看来CSS4工作草案证实了我的怀疑;在新规范中,:visted可用于其他“类似链接”的元素,即<面积&gt和<链接&gt。说明书上说:

:any link伪类表示充当超链接源锚点的元素。例如,At[HTML5]on,任何<a&gt,<面积&gt,或<链接&gt具有href属性的元素是超链接

所以<a&gt,<面积&gt,以及<链接&gt都被视为超链接,规范规定:visited适用于所有超链接。因此,从CSS4开始,您最好将a包含在a:visted

发表评论