【问题标题】:Greyscale Effect on Mouse Hover with Transparent PNG Image带有透明PNG图像的鼠标悬停的灰度效果
【发布时间】:2016-02-29 21:22:08
【问题描述】:

我正在寻找鼠标悬停在图像上的灰度效果,发现这段代码确实有效。但我遇到了另一个问题,我有透明背景的 PNG 图像,使用下面的代码在鼠标悬停时填充白色背景。 我确实可以选择使用两个不同的背景图像,这看起来非常干净和简短。 您能否建议应该进行哪些修改以及我可以有什么替代方案?

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+ */
}
img.grayscale:hover {
  filter: none;
  -webkit-filter: grayscale(0%);
}

非常感谢

【问题讨论】:

    标签: css svg grayscale


    【解决方案1】:

    由于语法错误,您的代码无法正常工作,您没有正确关闭 cmets。除此之外,过滤器应该按预期工作:

    body {
      background: gray;
    }
    
    img.grayscale {
      filter: url("data:image/svg+xml;utf8,http://www.w3.org/2000/svg\'>#grayscale"); /* Firefox 3.5+ */ 
      filter: gray; /* IE6-9 */ 
      -webkit-filter: grayscale(100%); /* Chrome 19+ & Safari 6+ */
    }
    
    img.grayscale:hover {
      filter: none;
      -webkit-filter: grayscale(0%);
    }
    &lt;img src="http://www.lavera.de/fileadmin/_processed_/csm_Avocado-Frei_7fac93857c.png" alt="" class="grayscale"&gt;

    【讨论】:

    • 感谢 Aziz,但这段代码已经可以使用了。我的问题是我正在使用具有透明背景的 PNG 图像,在鼠标悬停时使用上面的代码填充白色背景。如何在鼠标悬停时实现 PNG 图像的透明背景?
    • 我无法重现您的问题,悬停时没有白色背景。你使用的是什么浏览器?您在我的演示中看到白色背景了吗?
    • 谢谢阿齐兹。图像的父元素显示背景而不是 PNG 图像。我的错!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-30
    • 1970-01-01
    • 2011-11-08
    • 2012-12-11
    • 1970-01-01
    • 2012-11-09
    相关资源
    最近更新 更多