灰度到颜色转换在Firefox中不起作用

Posted

技术标签:

【中文标题】灰度到颜色转换在Firefox中不起作用【英文标题】:Grayscale to color transition not working in firefox 【发布时间】:2013-05-20 15:22:47 【问题描述】:

.picture-box img

display: inline-block;
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 */
filter: grayscale(100%);
-webkit-filter: grayscale(1);
-moz-filter: grayscale(1);
-o-filter: grayscale(1);
-ms-filter: grayscale(1);

.picture-box img:hover

filter: none; /* IE6-9 */
filter: grayscale(0);
-webkit-filter: grayscale(0);
-moz-filter: grayscale(0);
-o-filter: grayscale(0);
-ms-filter: grayscale(0);

-webkit-transition: all 2.0s ease-out;
-moz-transition: all 2.0s ease-out;
-ms-transition: all 2.0s ease-out;
-o-transition: all 2.0s ease-out;
transition: all 2.0s ease-out;

这段代码有什么问题?转换在 Firefox 中不起作用。我已经安装了 21.0。

【问题讨论】:

您是否尝试将top: 值添加到两者?例如。 top:0;。如果你给我一个 jsFiddle,我肯定能修复它 让我把它放在一个小提琴中。 你有 jsFiddle 吗?把它链接在这里:) jsfiddle.net/amrebel/D9dUAthanx :) 几件事: 1. Firefox 从未实现过-moz-filter,让它工作的唯一方法是使用你所使用的:filter:url("...")。请参阅this 2. 众所周知,Firefox 不会转换 css 过滤器值,如您所见 here 或 here。 【参考方案1】:

问题在于 Firefox 还不支持 CSS 滤镜效果(从 29.0.1 开始),这就是为什么您的第一个代码块包含一行 SVG 滤镜,而 Firefox 确实支持该滤镜。与 CSS 滤镜效果不同,SVG 滤镜不能使用 CSS 进行过渡。

我不知道任何针对 Firefox 的纯 CSS 解决方案,但有几种方法可以用 JS 来解决它(例如用可以覆盖和褪色的 SVG 或 html5 画布副本动态替换图像)。这个 jQuery 插件很好地覆盖了大多数浏览器的所有基础:https://github.com/karlhorky/gray

【讨论】:

【参考方案2】:

尝试将 .picture-box img:hover 设置为此:

 filter:grayscale(0%); 
 -webkit-filter: grayscale(0%);
 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");

你可以在这里查看。 http://www.cheesetoast.co.uk/add-grayscale-images-hover-css-black-white/

【讨论】:

谢谢,但它不起作用。我想要淡入淡出过渡。它只是从灰色变为彩色。

以上是关于灰度到颜色转换在Firefox中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

CSS 滑动 div(转换/转换在 Firefox 25.0.1 中不起作用)

@keyframes 动画在 Firefox 55.03 中不起作用

Firefox 中的 SVG 过滤器转换

CSS3颜色过渡在Chrome中不起作用

频谱颜色选择器在 Internet Explorer 中不起作用

CSS3 中的转换在 Firefox 或 Internet Explorer 中不起作用