css - 如何使用CSS为过滤后的图像制作动画

标签 css

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

这会将图像从彩色转换为灰度。但我想用动画效果。我可以用 jQuery 做到这一点。但我需要纯 css 解决方案。

那么,如何在鼠标悬停在图片上时产生动画效果呢?


更新

我试过这个但在 firefox brwoser 中不起作用,甚至在 IE11 中它也不是灰度!

filter: url("data:image/svg+xml;utf8,<svg%20xmlns='http://www.w3.org/2000/svg'><filter%20id='grayscale'><feColorMatrix%20type='matrix'%20values='0.3333%200.3333%200.3333%200%200%200.3333%200.3333%200.3333%200%200%200.3333%200.3333%200.3333%200%200%200%200%200%201%200'/></filter></svg>#grayscale"); /* Firefox 3.5+ */
    filter: gray; /* IE6-9 */
    -webkit-filter: grayscale(1); /* Google Chrome, Safari 6+ & Opera 15+ */



    filter: grayscale(100%);

    transition : filter 500ms linear;
    -webkit-transition: -webkit-filter 500ms linear;
    -moz-transition: -moz-filter 500ms linear;

demo

最佳答案

您应该可以通过 transition

做到这一点

示例

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

    transition : filter 500ms linear;
    -webkit-transition: -webkit-filter 500ms linear;
    -moz-transition: -moz-filter 500ms linear;
}

关于css - 如何使用CSS为过滤后的图像制作动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22094625/

相关文章:

Chrome 和 IE 上的 Javascript 打印

css - 如何将::before伪类添加到该元素

html - td 内的 div 弹出窗口

CSS:最后一个子元素的高度应该基于之前的兄弟元素而不是溢出父元素

css - 如何让一个包含 "position"样式和内容的 div 居中?

javascript - getCompatedStyle() 意外行为

css - 一旦你做了 onblur,如何删除按钮的默认蓝色边框?

html - 当用户在菜单外单击时折叠弹出菜单

html - CSS 在图像周围环绕列表,背景不出现在后面

javascript - 如何将页面部分锚定到滚动条上出现的导航栏的底部?