10

给定以下示例: http: //jsfiddle.net/A8v9x/4/ - 当您单击第一个链接然后返回页面时,第一个链接变为绿色。但是,它仍然没有下划线,即使已访问的链接被声明为具有text-decoration:underline;. 即使您添加!important到该规则,也没有任何变化。

在 CSS 规范中找不到有关此类行为的任何信息。这是一个常见的浏览器错误吗?如何解决它?

4

2 回答 2

16

您不能在:visited. 这是出于隐私问题,在https://developer.mozilla.org/en/CSS/Privacy_and_the_:visited_selector进行了讨论。基本上,更改计算属性可以让网站确定用户访问过哪些网站。

可用于设置已访问链接样式的 CSS 属性是颜色、背景颜色、边框*颜色、轮廓颜色和列规则颜色,并且当未访问和已访问样式都是颜色时(不是绘制服务器或none),填充和描边属性。对于不允许的属性(以及允许的属性的 alpha 分量,当使用 rgba() 或 hsla() 颜色或透明时),将使用未访问链接的样式。

于 2012-05-06T16:05:41.380 回答
1

我昨天遇到了同样的问题,我找到了解决方法。在过去,我过去常常把链接放在下划线和访问链接没有,更简单的访问者不要点击同一个链接两次。

昨天当我尝试做同样的事情并且没有工作时,我感到很惊讶。我浪费了 30 分钟,直到我在互联网上发现,由于安全原因,自 2007 年以来,所有浏览器都限制了您可以“访问”的属性。它们只是您可以设置为“已访问”的 6-7 个属性。其中之一是边框颜色。然后我想将下划线设置为无,并使用“border-bottom-color”作为下划线。您不能设置“border-bottom-color:transparent;” 对于已访问,但您可以将边框颜色设置为与父元素背景颜色相同的颜色。一旦访问链接,这将使下划线不可见。

<style type="text/css">
body{color:black;background-color:white;}
a:link{color:blue;text-decoration:none;border-bottom: 1px solid;border-bottom-color:blue;}
a:visited{color:red;border-bottom-color:white;}
</style>

或者您可以通过将链接边框颜色设置为与背景相同并为访问者设置不同的颜色来执行相反的操作(您所要求的)。

反面演示:https ://jsfiddle.net/stfr9f9a

于 2015-07-23T10:42:21.810 回答