【问题标题】:Inherit an :visited link with color of the link继承带有链接颜色的 :visited 链接
【发布时间】:2013-09-04 20:28:53
【问题描述】:

有没有什么快速的方法可以让:visited 链接与链接本身的颜色相同?

例如:

* {color:black}
a:link {color:blue}
a:visited {color:inherit}

当我访问该链接时,此 CSS 会将链接变为黑色。
但我想保留链接的原始颜色(在本例中为蓝色)。

我想我可以这样做:

a:link, a:visited {color:blue}

但是,我有一个巨大的 css,其中包含许多链接、不同的颜色,并且没有来自一年前编写此代码的愚蠢的该死设计师(我)的 cmets。应用该解决方案将是一场噩梦,因为链接有一百种样式。

那么...有没有办法用“原始”颜色覆盖:visited 颜色,而不更改整个样式表?

(这可能与this question 重复,但给出的答案都不起作用,而且我不能使用 JS(客户要求)。)

【问题讨论】:

  • 如果您将所需的代码放在 CSS 的底部,它应该会覆盖所有以前的样式。
  • 你的意思是:active还是:visited
  • 我的意思是“访问过”,对于错误的标题和其他 active 引用感到抱歉......
  • @Elen 谢谢,我知道,但这不是我想知道的。我想知道是否有任何快速的方法可以用原始链接的颜色覆盖visited 样式。

标签: css


【解决方案1】:

在找到更好的答案之前,有一个部分解决方案:根据this MDN page,Mozilla 将-moz-visitedhyperlinktext 定义为超链接的“已访问”颜色。

所以,如果你有这个 HTML:

<a href="#">This is what an a normally looks like</a>
<div class="test">
    <a href="#">This is an a in a black container</a>
</div>
<div class="test">
    <a href="#" style="color:-moz-visitedhyperlinktext">This is a visited a?</a>
</div>

使用这个 CSS:

.test, .test * {color:black}

a 会看起来“自然”,正如您在this fiddle 中看到的那样。仅在 Mozilla 中。

其他浏览器不行,但是可以写

color:blue;
color:-moz-visitedhyperlinktext;

对于颜色,其他浏览器会忽略 -moz- 。

【讨论】:

  • 是的,尤其是在您不将背景颜色更改为默认值的情况下。否则你可能会得到相同的前景色和背景色。
  • 我不知道我是否理解正确,但我觉得这个解决方案与预期结果相反?我的意思是,我不希望以“已访问链接”颜色显示普通链接,而是以“普通链接”颜色显示“已访问”链接......啊,真是一团糟:D
  • 嗯,我应该输入-moz-hyperlinktext 而不是-moz-visitedhyperlinktext。但是现在,但我发现我完全误解了您的问题。而且我不认为有一个简单的解决方案。 color:currentColor 也不起作用。因此,请检查您的样式表并将所有 a:link 更改为 a 并删除所有 a:visited
  • 但是,那么问题来了,为什么要阻止用户查看他们访问过的页面?
  • 这是因为客户要求:我们必须提供 AAA 可访问性,并且访问链接的“紫色”颜色与背景的对比度不足(有点,该死)。所以,我想如果我可以保持默认链接颜色并用边框或其他东西显示访问过的链接......但正如你所说,似乎没有简单的解决方案:/
猜你喜欢
  • 1970-01-01
  • 2016-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-11
相关资源
最近更新 更多