css3 – 仅在一个方向上模糊CSS(运动模糊)

我需要在页面上动态模糊图像,但只能沿着一个轴(具体为Y).所以这是我的要求:

>必须完成“直播”(我无法预渲染图像的模糊版本)
>就像我说的那样,只在Y轴上(就像运动模糊,但是垂直)
>需要动画制作
>应该在IE9中工作

我的第一个想法是使用一个简单的CSS过滤器:

img {
    filter: blur(20px);
}

我可以通过添加转换(过渡:过滤0.2s线性)来设置动画,但它只会创建高斯模糊,这不是我想要的效果.语法不支持filter:blur(0 10px);将模糊仅限制为一个轴.

然后我读到模糊过滤器(以及其他)实际上只是SVG过滤器的简写,如果需要,可以手动编写.所以我创建了一个名为filter.svg的SVG,它仅指定沿Y轴(0 20)的20px模糊:

<?xml version="1.0" standalone="no"?>
<svg width="1" height="1" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <defs>
        <filter id="blur">
            <feGaussianBlur in="SourceGraphic" stdDeviation="0 20" />
        </filter>
    </defs>
</svg>

并像这样应用它:

img {
    filter: url("filter.svg#blur");
}

这完全有效……但仅限于Firefox. Safari/Chrome don’t support url()作为过滤器的值.另外,我无法为它设置动画,因为值是URL而不是数字,因此转换不起作用.

最重要的是,我认为其中任何一种方法都不是work in IE9.

所以:有什么方法可以做我想做的事情吗?我已经研究过使用canvas作为替代方案,但是找不到任何只有一个方向的模糊的例子.

最佳答案
如果我正确理解这个问题,可以用JQuery来完成.

CSS3确实有它的限制,它在交互值方面非常有限.

Jquery还增加了跨平台稳定性.

JQuery的
    var $img = $(‘.image’)
     $img.hide();
     $(document).ready(function(){
     $($IMG).show().动画({
     不透明度:100,
     paddingTop:’= 80′
     ,500
     });

这是一个如何与javacript一起使用的示例
愚弄不透明.

<!DOCTYPE html>

<风格>
#容器 {
宽度:400px;
  身高:400px;
位置:相对;
  背景:黄色;
}
#animate {
宽度:50px;
  身高:50px;
位置:绝对;
  背景颜色:红色;
}

<身体GT;

< p为H.
点击我
< / p为H.

< div id =“container”>

< / DIV>

<脚本>
function myMove(){
var elem = document.getElementById(“animate”);
  var pos = 0;
var id = setInterval(frame,5);
  function frame(){
if(pos == 150){
      clearInterval(ID);
} else {
      pos;
elem.style.left = pos’px’;
    }
}
}
< /脚本>

< /体>
`

转载注明原文:css3 – 仅在一个方向上模糊CSS(运动模糊) - 代码日志