我访问过的网络项目链接不会加下划线,但是,其他访问过的修改工作正常,并且下划线正在用于悬停。我向我的导师展示了这个并且他很困惑,并说他会试着抽出时间看看它,然而,截止日期即将结束,我不能再等了。这是我的布局页面中处理锚标记的部分:
a:link
{
text-decoration: none;
color: #d1bd22;
font-size: 1.3em;
}
a:visited
{
text-decoration: underline;
color: white;
font-size: 1.3em;
}
a:hover
{
text-decoration: underline;
color: #d1bd22;
font-size: 1.3em;
}
a:active
{
text-decoration: none;
color: white;
font-size: 1.3em;
}
以下是我网站的链接:
答案 0 :(得分:4)
给@pwdst提示,以便发现这一点。
有关Firefox的信息,请参阅this documentation。类似的规则适用于Chrome。
由于JavaScript可以读取应用于元素的样式(以及其他元素及其计算样式),因此允许在:visited
时更改链接可以显示有关其他网站的信息有人来过。
为了保护用户的隐私,浏览器限制:visited
可以更改哪些属性,text-decoration
无法更改。
另请参阅:The Selectors specification,祝贺此行为:
因此,UA可能会将所有链接视为未访问的链接,或实施其他措施以保护用户的隐私,同时以不同方式呈现访问和未访问的链接。
答案 1 :(得分:3)
我在评论中的猜测是正确的。如果您创建一个测试示例(在JS Fiddle或测试HTML文件中),则在Dev Tools中检查时应用属性 ,但无法直观地看到。这是为什么?
有几个故事是关于恶意网站向其网页添加链接(通常是隐藏),然后使用:visited伪类来确定用户是否访问过该网址时,用户隐私遭到入侵。
因此,Mozilla开发者网络声明 -
注意:出于隐私原因,浏览器严格限制您的风格 使用此伪类选择的元素进行应用:仅颜色, 背景色,边框色,边框底色, border-left-color,border-right-color,border-top-color, outline-color,column-rule-color,fill和stroke。还请注意 alpha组件将被忽略:alpha组件 改为使用未访问的规则(不透明度为0时,in 那种情况下整个颜色被忽略了,而一个未被访问过 使用规则。
虽然颜色可以改变,但getComputedStyle方法会有所不同 并始终返回未访问颜色的值。
有关限制及其动机的更多信息, 请参阅隐私和:访问选择器。
请参阅https://developer.mozilla.org/en-US/docs/Web/CSS/:visited
正在应用颜色属性的事实也只有一半,因为它被报告为已应用且在视觉上存在 - 但getComputedStyle方法将位于并返回颜色,就像未应用规则一样。
因此,恶意网站管理员无法再使用此技术确定您访问过的网站。
答案 2 :(得分:-1)
我相信这种情况发生的原因是优先的。
因为你已经在其他人之前定义了一个:链接,而其他人没有添加任何额外的权重,所以浏览器正在使用第一个定义。
尝试在最后添加a:链接,它应该按预期工作(因为只有特定的悬停和访问将与之前的定义匹配)