2010-12-15 121 views
3

我一直在尝试用这个CSS翻转背景图片:当你有一个PNG用透明镜像/在IE翻转图像和保持透明度

.flipHorizontal { 
    -moz-transform: scaleX(-1); 
    -webkit-transform: scaleX(-1); 
    -o-transform: scaleX(-1); 
    transform: scaleX(-1); 
    filter: FlipH; 
    -ms-filter: "FlipH"; 
} 

一切工作中,除了IE浏览器都只是罚款背景(阿尔法通道)。所有透明和半透明像素都会变黑。

任何人都知道这个解决方法?

也许有另一个过滤器(读取“修补程序”),MS实施来解决这类问题。我认为同样的错误也适用于旋转和其他转换过滤器以及PNG。

+0

什么版本的IE? – Rushyo 2010-12-15 13:57:23

+0

所有版本的IE,即使是新的IE9测试版 – wazz3r 2010-12-15 21:16:30

回答

2

使用旧的IE6 AlphaImageLoader破解得到你正在寻找的,以及另一DXImageTransform做翻转。不幸的是,由于你必须定义图像,所以它变得不那么通用,但你可以用一些脚本动态设置样式。 (用于动态脚本的一个例子见here - 查找pngfix.js代码。)

.flipHorizontal { 
    -moz-transform: scaleX(-1); 
    -webkit-transform: scaleX(-1); 
    -o-transform: scaleX(-1); 
    transform: scaleX(-1); 
    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='myImage.png') 
      progid:DXImageTransform.Microsoft.BasicImage(mirror=1); 
} 

在IE8和FF3.6测试成功。不知道你需要-ms-过滤器,但我无法测试IE6或IE7,并且不确定它是否需要该属性。

+1

我用FlipH来做魔术,因为我不得不使用JavaScript。 IE用户如果想摆脱黑幕,则必须切换浏览器。我可能会通过强迫一些用户退出使用IE来帮助所有Web开发人员...如果您愿意使用JavaScript来修复它,那么您的解决方案将非常有用。 – wazz3r 2011-10-17 14:17:52

+1

其他任何使用它的人可能想删除尾随的“第二个过滤器 - (镜像= 1)”; - 让我有点痛苦! – Gais 2013-07-09 14:03:10

+0

@Gais提到的尾部引用已从代码中删除。 – Jpsy 2013-10-29 09:43:48

3

所以,我意识到这是2年太晚了。抱歉。 :)

但是,对于任何其他人来到这里,尝试把一个背景颜色的CSS,并应该使它感到高兴(或者,至少,它修复它同样的问题,当你淡入淡出,我假设它们都是相同的掩蔽错误)。

+0

非常有帮助。感谢张贴2年太晚了! – Brendan 2014-10-30 21:15:09

+0

现象解决方案!谢谢。 – 2015-10-08 17:50:57