视网膜显示的CSS滤镜:模糊图像

时间:2012-11-12 16:57:35

标签: css css3 filter css-transitions retina-display

当您将-webkit-filter和-webkit-transition应用于Image并在悬停时更改过滤器时,图像过渡效果很好,但随后图像变得非常模糊。

注意:这只发生在 Retina-Displays 上 - 对于'普通'ppi显示没有任何问题,但模糊不清,例如带有Retina的新MacBook Pro显示。

我的CSS(没有供应商前缀):

img {filter:grayscale(1);filter:saturate(0%);transition:2s ease;width:200px;height:200px}
img:hover {filter:grayscale(0)}​

注意:要查看效果/错误,我已将转换持续时间设置为2秒

查看我的演示:http://jsfiddle.net/dya2t/7/

我该如何解决这个问题?

编辑:如果我将:hover-state设置为filter:none,它的尖锐! :-)但当然转换不再有效: - / 一旦图像上有过滤器(即使值为0或0%),图像在视网膜显示器上变得模糊(有或没有过渡......它只是模糊,一直)。我想这是一个Filter-Bug。


这是WebKit https://bugs.webkit.org/show_bug.cgi?id=93471

中的已知错误

3 个答案:

答案 0 :(得分:38)

我设法通过申请img标签解决了这个问题:

-webkit-transform: translateZ(0); 

http://jsfiddle.net/78qbn/3/

答案 1 :(得分:4)

带-webkit-backface-visibility:hidden的子元素;将解决这个问题。

http://codepen.io/amboy00/pen/Bxbrd

答案 2 :(得分:0)

加入stackoverflow让其他人知道,因为我必须自己找到它: 当尝试在chrome中打印图像时,此错误也会显示(但不同)。他们变成超级像素化

如果无论打印机或打印设置如何,都将-webkit-filter投射到镀铬的PNG上,它会以正确的尺寸打印图像,但会下采样到70 dpi以下。它在打印预览中也可见。

-webkit-transform: translateZ(0);修复了它。

Meatspace repro:prints of same stack of PNGs with & without fix