CSS/HTML: 点击后去除图片滤镜

3

我在我的网站上使用一些图像作为链接。当我将鼠标悬停在其中一个图像上时,它们从灰色变成彩色 - 当鼠标不再悬停时,它们会恢复到灰色。

我希望在激活后图像保持彩色。比如说我点击了该图像,直到另一个链接被点击/激活之前,它应该保持彩色。

这是我的代码:

HTML:

<p><a href="privileged.php" target="testframe">
<img class="grayscale" height="67" src="powerlogo.png" width="303">
</a></p>
<iframe name="testframe"></iframe>

CSS:

img.grayscale {
  filter: url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'grayscale\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter></svg>#grayscale"); /* Firefox 3.5+ */
  filter: gray; /* IE6-9 */
  -webkit-filter: grayscale(100%); /* Chrome 19+ & Safari 6+ */
}

a:hover img, a:focus img {
    filter: none;
    -webkit-filter: grayscale(0%);
}

以上代码在Firefox中可正常工作,但在Chrome和IE中无法工作。

我做错了什么?


我认为这不能通过CSS实现。 - maximkou
只要用户没有点击其他地方,链接就应该保持在其 :active 状态,因此请尝试在其中格式化图像。 - CBroe
1个回答

6
您可以使用 JavaScript 为元素添加/切换类,并使用 CSS 样式化该类:
$("a").click(function(){
  $("a").removeClass("active");
  $(this).addClass("active");
});

a:hover img,
a:focus img,
a.active img {
  filter: none;
}

http://fiddle.jshell.net/3uYDc/


2
非常感谢,这个完美地解决了问题。但是请放心,我在工作中,所以之前无法回复。 - dnn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接