将访问过的链接颜色设置为任何未访问链接的颜色(PS不是通常的问题)

我需要将a:visited CSS设置为正常a所设置的颜色。

我想告诉浏览器的是, 对于访问过的链接,使用与未访问链接相同的颜色,无论它是什么颜色

我需要这样做, 而不指定一个特定的颜色。

就像,如果有一些奇怪的浏览器出现,使用“绿色”作为普通未访问链接的颜色,这个CSS应该指示浏览器对访问过的链接使用相同的绿色。 浏览器使用的颜色应该对我的代码是透明的,因此也就是“任何颜色”。

PS我知道如何设置:访问和一个特定的颜色。 这不是我所要求的。

PPS我愿意使用JavaScript,如果我必须。 但是我真的非常想让浏览器做到这一点。

我为什么要做你喜欢的事情?

IE8用于链接的蓝色是很酷的。 它不是#0000FF。 这是一个很好的蓝色阴影。 所以我想把它设置为访问和未访问的链接。 但我不应该采取一个截图或使用一些插件每次挑选确切的hex值。 如果IE后来改变颜色的一些其他真棒阴影,这个代码应该只是工作。 我不想再次findhex,并改变了我的代码。

这只是一个原因。 不要给我那个蓝色的hex。 发现这很容易,但这不会是答案!

a:link{color:inherit} a:active{color:inherit} a:visited{color:inherit} a:hover{color:inherit} 

当然好。

我需要这个,因为一些文本链接(而不是图像链接)是我的项目的主菜单的重要组成部分,所以我想他们我的颜色,而不是浏览器的颜色!

每个链接都被包含在一个ap标签组中,该标签组的类有一个特殊的颜色(我的颜色)在CSS中设置。

在Firefox和Chrome中Danny Robers脚本适用于我(不确定关于IE)。

FWIW, HyperlinkText的特殊价值将成为你想要的“标准”方式,但是它在2003年春季的某个时候从CSS3中被淘汰了。

它看起来像Firefox是唯一的开始实施它的浏览器,因为以下适用于Firefox:

a:visited {color:-moz-hyperlinktext; }

我不认为有一个纯粹的CSS解决scheme。 通常你会select一种颜色,并设置一个:link和a:visited相同的颜色。

我试过{color:inherit}但是没用。

这个jQuery解决scheme虽然工作很好。

 <!DOCTYPE html> <html> <head> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript"></script> <script type="text/javascript"> $(function(){ var normalColor = $('a:link').css('color'); $('a:visited').css('color', normalColor); }); </script> </head> <body> <a href="http://www.google.com">Google</a> <a href="nowhereyouvebeen">No where you've been</a> </body> </html> 

没有办法使用CSS来做到这一点。 浏览器根据仅知道的数据库条目指示访问链接,然后使用特定浏览器configuration中指定的默认颜色。

CSS实际上就是不能获取页面上的东西的颜色。 就是这样。 唯一的办法是使用像丹尼罗伯茨的答案的JavaScript。


我认为他的答案不正确的原因是$('a:visited')只是select所有访问过的链接,然后颜色改变了。

你需要做的是观察点击事件并重新运行代码:

 var normalColor = $('a:link').css('color'); $('a').click(function() { $('a:visited').css('color', normalColor); }); 

没关系 看到我的另一个答案,与提问者的问题更具体相关。

我这样做:

 a, a:visited { color:#4CA1F6; } a:hover { color:#4CB6E1; } a:active { color:#0055AA; } 

现在,这个线程让我思考,而且我已经对我的方法进行了以下改进:

 a:link, a:visited { color:#4CA1F6; } a:hover, a:focus { color:#4CB6E1; } a:active { color:#0055AA; } 

我不认为有一个纯CSS的方式来实现这一点。 我想你需要使用JavaScript来获得a的颜色,然后设置:visited为该颜色,这可能不适用于所有浏览器,除非指定了{color:#dea}。

普雷斯托:

 $(function(){ var sheet = document.styleSheets[document.styleSheets.length-1]; sheet.insertRule( 'a:visited { color:'+$('a:link').css('color')+'; }', sheet.length ); }); 

我已经testing过,并可以确认这在Chrome中的作品。 请记住,您要添加规则的sheet – 确保其媒体属性适用于您关心的媒体。 此外,如果您有任何规则覆盖着色,这可能无法正常工作 – 所以请确保您的样式表已经清除。

我不太确定这是一个非常明智的做法。 就个人而言,我总是明确地定义每个网站的链接颜色。

PS:

显然IE(不知道哪个版本)坚持自己的语法:

 sheet.addRule('a:visited', $('a:link').css('color'), -1); 

我需要一个解决办法,因为这个问题的标题build议“设置访问的链接颜色为任何未访问链接的颜色”。 对我来说,我需要一种方法来执行浏览器页面内容屏幕截图的图像比较,我用它进行回归testing(pdiff – 感知差异)。 这是为我工作的代码。

 (function(){ var links = document.querySelectorAll('a'); for (var i=0; i<links.length; i++) { var link = links[i]; if (link.href) { //must be visitable var rules = window.getMatchedCSSRules(link) || []; var color = '#0000EE' //most browsers default a:link color; for (var j=0; j<rules.length; j++) { var rule = rules[j]; var selector = rule.selectorText; color = rule.style['color'] || color; } link.setAttribute('style','color:' + color + ' !important'); //this was enough for me but you could add a 'a:visited' style rule to the rule set } } })(); 
  a:link, a:visited {color: inherit;} a:hover, a:focus {color:inherit;} 
 a.one:link { color:#996600; background-color:transparent; text-decoration:underline; } a.one:hover { color: red; background-color: transparent; text-decoration: underline; } a.one:visited { color: #996600; background-color: transparent; text-decoration: underline } a.one:hover { color: red; background-color: transparent; text-decoration: underline; }