【问题标题】:CSS3 animated desaturationCSS3 动画去饱和
【发布时间】:2013-02-08 19:56:30
【问题描述】:

我正在对图像进行去饱和处理以使其变为黑白。我希望它在悬停时淡出颜色(使用 CSS3 过渡),但我似乎无法让它工作。有什么想法吗?

这是一个例子:http://jsfiddle.net/sChY5/ 下面是我的 css

img.desaturate {
-webkit-transition: all 0.2s ease-in-out;
-moz-transition: all 0.2s ease-in-out;
-o-transition: all 0.2s ease-in-out;
transition: all 0.2s ease-in-out;
filter: grayscale(100%);
-webkit-filter: grayscale(100%); -moz-filter: grayscale(100%);
-ms-filter: grayscale(100%); -o-filter: grayscale(100%);
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');
filter: gray;
-webkit-filter: grayscale(1);
}

img.desaturate:hover {
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%);
}

【问题讨论】:

    标签: css animation css-transitions


    【解决方案1】:

    您没有将 transition 属性放在好的类选择器上。

    不得在img.desaturate:hover 上,而应在img.desaturate

    (我说的是你的 jsfiddle 演示,和你在这里发布的代码不一样)

    【讨论】:

    • 我在jsfiddle.net/4tshM 更新了默认状态的转换。刚刚在 Chrome 中检查,它工作正常,但奇怪的是在 Firefox 18.0.2 中没有......
    • 嘎。排序比。谢谢大家=====EDIT=======实际上,没有排序。滤镜效果在 FF 中有效,是过渡无效...
    • 它不会转换,因为浏览器无法插入 SVG 滤镜动画,这是 FF 在悬停时回退的内容。但是,对于当前版本的 FF,您不需要该后备。只需使用filter: grayscale(0) 就像这里:jsfiddle.net/4tshM/8
    【解决方案2】:

    我只是检查它并让它在 jsfiddle 中工作,如你所想或你想要什么,请澄清。

    【讨论】:

    • 如果你看起来不错,在 jsFiddle 中,悬停时过渡是可以的,但当鼠标悬停时就不行(无过渡)。
    • 在 Firefox 上,它会降低图像的饱和度并在悬停时移除去饱和度,但过渡不起作用。去除去饱和需要 1 秒钟。 jsfiddle.net/4tshM/1
    猜你喜欢
    • 2018-01-15
    • 2018-04-14
    • 1970-01-01
    • 2011-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-30
    • 1970-01-01
    相关资源
    最近更新 更多