【问题标题】:How to change link color when clicked?单击时如何更改链接颜色?
【发布时间】:2013-07-05 01:27:24
【问题描述】:

:active 更改颜色,但仅在用户仍按住鼠标时。

例如:

黑色(点击)> 蓝色(释放)> 黑色

相反,我需要:

黑色(点击)> 蓝色(释放)> 蓝色

有没有办法用 CSS 做到这一点? 编辑:我应该提到我不希望浏览器设置已访问链接的样式,所以我不能使用:visited

【问题讨论】:

  • 我不希望浏览器记住访问过的链接。还有其他方法吗?
  • 为什么不希望浏览器记住访问过的链接,但点击后会改变颜色?也许您可以考虑在单击特定链接时设置一个标志,并根据该标志更改链接颜色...
  • 因为在加载下一页时的两秒之间,我希望颜色保持蓝色,但在加载新页面时不是蓝色。

标签: css


【解决方案1】:

您可以将tabindex 属性和:focus 选择器组合用于您的锚元素。

http://jsfiddle.net/dcNzt/

HTML

<a href="#" tabindex="1">Stays blue</a>

CSS

a {   
    color: black;   
}

a:active {
    color: blue;
}

a[tabindex]:focus {
    color:blue;
    outline: none;
}

【讨论】:

  • 如果我错了(并且晚了 2 年),请纠正我,但 :focus 本身不足以完成发帖人的要求吗?
  • @BevansDesign 现在看起来对于大多数浏览器来说都是如此!我想当我写这个答案时,chrome 最近从 webkit 引擎切换。但是,Safari 仍然需要 tabindex 属性才能使其工作。
  • 我的页面中有书签。当我单击滚动到与散列 href 匹配的 div 的链接时,它不起作用
【解决方案2】:

使用 :visited 设置已访问链接的颜色。

【讨论】:

  • 我不希望浏览器记住访问过的链接,我应该澄清一下。还有其他方法吗?
【解决方案3】:

如果您实际上并未将用户引导至新页面,而只是想更改锚颜色,请使用 javascript: 首先你必须给你的链接一个类似.changeable的类

那么你可以像这样使用 javascript

var links = document.getElementsByClassName('changeable');
function changeColorToRed(e) {
    e.target.style.color = e.target.style.color ? null : 'red';
}
for (var i = 0; i < links.length; i++) {
    links[i].addEventListener('click', changeColorToRed);
}

html

<a class="changeable">Change me</a>

这里有现场直播example

【讨论】:

  • 它将用户引导到一个新页面。我只希望链接保持蓝色,直到加载下一页。没有纯粹的 css 方法吗?
  • 你想要两个对比鲜明的东西。 bitfiddler 的答案非常适合您。如果您不想使用访问行为,请使用 CSS
  • 我不想设置已访问链接的样式...因为那样链接将永远是蓝色的。在新页面加载之前,我只希望它是蓝色的。
  • 是的,但这就是为什么我要检查是否有 css 解决方案,所以我可以避免这种情况。
【解决方案4】:

http://www.w3schools.com/css/css_link.asp 希望对您有所帮助^.^。

将已访问/未访问的颜色设置为相同。

<!DOCTYPE html>
<html>
<head>
<style>
a:link {color:#000000;}    /* unvisited link is black*/
a:visited {color:#000000;} /* visited link is black (reverse the color back to black)*/
a:hover {color:#0000FF;}   /* mouse over link (blue when mouse over)*/
a:active {color:#0000FF;}  /* selected link (blue in the split second which you loading the page.)*/
</style>
</head>

<body>
<p><b><a href="http://google.com">This is a link</a></b></p>
<p><b>Note:</b> a:hover MUST come after a:link and a:visited in the CSS 
definition in order to be effective.</p>
<p><b>Note:</b> a:active MUST come after a:hover in the CSS definition in order 
to be effective.</p>
</body>
</html>

它们都应该是蓝色的。由于您不希望浏览器记住访问过的链接,我相信这将是一个更复杂的答案,因为您想改变浏览器应该如何工作的行为。

【讨论】:

  • 有比 w3schools 更好的来源,例如 mdn developer.mozilla.org/en-US/docs/Web/CSS/:visited 也尽量不要像给你女朋友的短信一样写
  • @raam86 : 为错误的发布行为道歉。顺便说一句,关于其他事实 w3school 是否提供了错误信息。至少在这一点上它是正确的,简单的,可以解决问题......祝你有美好的一天
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-01
  • 1970-01-01
  • 2011-10-20
  • 2021-09-21
  • 1970-01-01
相关资源
最近更新 更多