我看过的每个示例和样式表都使用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可用于其他“类似链接”的元素,即<;面积>和<;链接>。说明书上说:
:any link伪类表示充当超链接源锚点的元素。例如,At[HTML5]on,任何
<;a>,<;面积>,或<;链接>具有href属性的元素是超链接
所以<;a>,<;面积>,以及<;链接>都被视为超链接,规范规定:visited适用于所有超链接。因此,从CSS4开始,您最好将a包含在a:visted中