2011-09-03 71 views
60

访问时,必须禁用锚标记的颜色更改。我这样做了:访问时停用锚标记的颜色更改

a:visited{ color: gray } 

(链接在访问前是灰色的)。但是,这是一种在链接访问后明确声明颜色的方式,这又是一种颜色变化。

如何禁止颜色变化的锚标记访问时没有做任何明确的颜色更改?

回答

60

你不能,你只能风格访问状态。

对于其他人发现这种情况,请确保您有他们在正确的顺序:

a {color:#FF0000;}  /* unvisited link */ 
a:visited {color:#00FF00;} /* visited link */ 
a:hover {color:#FF00FF;} /* mouse over link */ 
a:active {color:#0000FF;} /* selected link */ 
+4

为了真正分析它,不应该'a'是'a:link'吗? –

+1

我想是的,尽管我很少这么做。 –

+6

这不是俚语:http://en.m.wikipedia.org/wiki/Anal_retentiveness –

0

请删除选择器或将其设置为与正常显示的文本相同的颜色。

10

对于:hover覆盖:visited,并确保:visited是一样的初始颜色,:hover一定要来之后:visited

所以如果你想禁用颜色变化,a:visited必须在a:hover之前。就像这样:

a { color: gray; } 
a:visited { color: orange; } 
a:hover { color: red; } 

要禁用:visited变化,你将与非伪类样式是:

a, a:visited { color: gray; } 
a:hover { color: red; } 
+2

我看着这个错误,还是你正在做与报价中所说的完全相反的内容?根据W3Schools它是1)'a:link','a:visited' 2)'a:hover' 3)'a:active' –

139

如果你只是想锚的颜色保持不变,你可以利用锚的父元素继承:

a, a:visited, a:hover, a:active { 
    color: inherit; 
} 

注意,不需要为每个选择器重复规则;只需使用逗号分隔的选择器列表(顺序对于伪伪元素来说是重要的)。此外,您还可以将伪选择一类,如果你想选择禁用特殊锚颜色:

.special-link, .special-link:visited, .special-link:hover, .special-link:active { 
    color: inherit; 
} 

你的问题只询问有关的访问状态,但我认为你的意思是所有的状态。如果您想允许所有未访问的颜色更改,则可以删除其他选择器。

+0

这很好,谢谢!作为对其他人的一个提示,你可能需要添加!对颜色标签来说很重要,以便它能够根据你的网站中的其他内容进行正确采用:color:inherit!important; – Mmm

+1

在Chrome中,只会将链接文本呈现为黑色。 – RajV

+0

有没有办法让'a:link'成为默认的链接颜色(通常是蓝色)*并*有'a:visited'继承而来,而不需要在任何地方硬编码“蓝色”? – rustyx

-3
a:visited { 
    text-decoration: none; 
} 

但它只会影响尚未被点击的链接。

+1

这个问题涉及颜色,而不是文字修饰。 –

-2

您可以通过将a:linka:visited选择器一起呼叫来解决此问题。并按照a:hover选择器进行操作。

a:link, a:visited 
{color: gray;} 
a:hover 
{color: skyblue;}