我最近在Webkit浏览器中遇到了一个奇怪的行为(至少在OSX下),这比我想要的解决时间要长得多!
基本上:在元素上设置过滤器:blur(0)(或特定于供应商的-webkit-filter)应该意味着不会对元素应用任何形式的模糊.
但是,当指定模糊(0)或使用指定单位(即:blur(0px))进行归零时,Webkit仍会模糊该元素.
我在这里拼凑了一个快速的小提琴演示:http://jsfiddle.net/f9rBE/
<div class="no-blur"> <p><strong>This has absolutely nothing assigned</strong></p> <p>Lorem ipsum dolor sit amet,consectetur adipiscing elit. Aliquam facilisis orci in quam venenatis,in tempus ipsum sagittis. Suspendisse potenti. Donec ullamcorper lacus vel odio accumsan,vel aliquam libero tempor. Praesent nec libero venenatis,ultrices arcu non,luctus quam. Morbi scelerisque sit amet turpis sit amet tincidunt. Praesent semper erat non purus pretium consequat. Aenean et iaculis turpis. Curabitur diam tellus,consectetur non massa et,commodo venenatis metus.</p> </div>
一个没有分配给它的样式,而另外两个有模糊(0)和模糊(0px):
.no-blur{} .zero-px-blur{ -webkit-filter: blur(0px); -moz-filter: blur(0px); -o-filter: blur(0px); -ms-filter: blur(0px); filter: blur(0px); } .zero-blur{ -webkit-filter: blur(0); -moz-filter: blur(0); -o-filter: blur(0); -ms-filter: blur(0); filter: blur(0); }
如果您在Safari或Chrome中查看,则底部的两个模糊:
一些值得注意的事情:
>在iOS7设备(包括iPhone和iPad)上的Safari中也会发生这种无意识的模糊;
>它也出现在OSX下的Chrome和Safari上;
>在非视网膜Apple硬件上,它似乎不会出现在Chrome和Safari下;
>在OSX中的FireFox下不会发生这种情况.
当然,在Firefox中根本不支持过滤:模糊,所以我很难判断我所看到的行为是故意/预期的行为,还是这是Webkit中的错误?
我最终得出的结论是,使用模糊(无)而不是具有所需的效果(即:删除了所有模糊效果),但我很困惑为什么使用零不具有相同的效果,因为在其他过滤器示例中(例如:filter:grayscale)可以简单地使用零而不是none关键字重置.
为什么是这样?
解决方法
我不得不在前一段时间处理这个问题,因为我必须进行过滤器转换,所以我需要它去零而不是没有.实际上,它是一种已知的WebKit错误,只影响视网膜屏幕,无论它是@ 2x图像,文本还是其他什么.
为了使它工作,你需要添加-webkit-transform:translateZ(0);
像魔术一样工作.但是不要相信我的话,你可以在这里查看:http://jsbin.com/OnebuKU/2/edit