【问题标题】:Change an image's grayscale property on hover在悬停时更改图像的灰度属性
【发布时间】:2013-03-17 20:35:27
【问题描述】:

我已经完成了迄今为止所做的事情:http://jsfiddle.net/U5pQs/

我试图让悬停在蓝色框 (#prompt) 上做两件事: 1)将房子的图像(#picbw)更改为黑白 2)在图像上显示一个带有文本的div(#text)

这是我用于此转换的代码:

#prompt:hover ~ #picbw {filter: grayscale(100%);
-webkit-filter: grayscale(100%);
-moz-filter: grayscale(100%);
-ms-filter: grayscale(100%);
            -o-filter: grayscale(100%);}

2) 有效,但我无法让 1) 发生,我不明白为什么!

非常感谢任何帮助:)

【问题讨论】:

    标签: css grayscale


    【解决方案1】:

    我认为这个帖子对你有用。 Image Greyscale with CSS & re-color on mouse-over? 阅读本文。 检查此链接。 http://webexplorar.com/creating-grayscale-images-with-css/ http://net.tutsplus.com/tutorials/html-css-techniques/say-hello-to-css3-filters/

    阅读:

    过去,我们使用过各种技巧来将图像从黑白转换为浏览器中的彩色。一种技术要求将两张图像堆叠在一起。另一种选择是使用画布。或者……我们可以使用灰度滤镜。

     img {
       -webkit-filter: grayscale(100%);
     }
    

    在对灰度函数应用百分比时,想想自己,“在 0% 到 100% 的范围内,我希望这张图片有多灰度?

    当与 CSS3 过渡一起使用时,我们可以应用漂亮而干净的悬停效果。

     img {
       -webkit-transition: -webkit-filter 1s;
         }
     img:hover {
      -webkit-filter: grayscale(100%); 
         }
    

    将来,您可能希望为其他浏览器提供前缀,但目前没有必要。无需应用 Mozilla 转换来适应仅在 Webkit 中实现的过滤器(到目前为止)。

    【讨论】:

    • 谢谢梅克。我会进一步调查。
    【解决方案2】:

    我找到的示例:http://jsfiddle.net/KDtAX/487/ 具有针对悬停状态和关闭状态的过滤器,但是“#prompt:hover ~ #picbw”对我来说没有任何作用。当我将其更改为“#picbw:hover”并将其与我链接到的示例相结合时,它起作用了。

    1) 您的 css 选择器不起作用:#prompt:hover ~ #picbw
    2) 您的 css 不起作用,请使用示例中的 css
    * 并且您需要 css3 的所有浏览器前缀

    #picbw {
        ...
        filter: url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'grayscale\'><feColorMatrix type=\'matrix\' values=\'1 0 0 0 0, 0 1 0 0 0, 0 0 1 0 0, 0 0 0 1 0\'/></filter></svg>#grayscale");
        -webkit-filter: grayscale(0%);
        -webkit-transition: all .6s ease; /* Fade to color for Chrome and Safari */
        -webkit-backface-visibility: hidden; /* Fix for transition flickering */
    }
    #picbw:hover {
        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 10+ */
        filter: gray; /* IE6-9 */
        -webkit-filter: grayscale(100%); /* Chrome 19+ & Safari 6+ */
        -moz-filter: grayscale(100%)
    }
    

    【讨论】:

    • 谢谢杰森。示例中的功能很好 - 我会使用它。可惜不同的 div 不能改变图像的灰度。
    • 好吧,总有办法的。使用 css 需要有一个子/父关系。否则,你可以使用 JS。
    • 浏览器兼容性怎么样?
    猜你喜欢
    • 1970-01-01
    • 2017-10-19
    • 1970-01-01
    • 2021-11-06
    • 2012-03-13
    • 2012-11-02
    • 2023-01-11
    • 2021-12-20
    相关资源
    最近更新 更多