CSS/HTML:点击时删除图像过滤器

Posted

技术标签:

【中文标题】CSS/HTML:点击时删除图像过滤器【英文标题】:CSS/HTML: Remove image filter on click 【发布时间】:2013-05-28 19:48:33 【问题描述】:

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

我希望图像在激活时保持着色。假设我单击了图像,它应该保持着色,直到单击/激活另一个链接。

这是我的代码:

html

<p><a href="privileged.php" target="testframe">
<img class="grayscale"  src="powerlogo.png" >
</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 完成。 只要用户没有点击其他地方,链接就应该处于:active 状态,所以尝试格式化其中的图像。 【参考方案1】:

您可以使用 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/

【讨论】:

非常感谢,这非常有效。不过请放心,我正在工作,所以之前一直无法回答。

以上是关于CSS/HTML:点击时删除图像过滤器的主要内容,如果未能解决你的问题,请参考以下文章

UITableview 单元格保留自定义图像视图过滤器

单击过滤器选项时,帖子/图像重叠,并在窗口调整大小后显示在砖石视图中

使用过滤器(或 jquery)删除 Wordpress 图像周围的锚元素

如何使用opencv从图像中删除小的彩色像素

如何从网络摄像头 OpenCV 裁剪圆形图像并删除背景

iOS - 创建核心图像过滤器循环时保留原始图像