CSS代码:
#btn{
background: url(transparent.png) no-repeat;
filter: alpha(opacity=0);
-moz-opacity: 0;
-khtml-opacity: 0;
opacity: 0;
}
的JavaScript / jQuery的:
$("#btn").animate({opacity:1,"margin-left":"-25px"});
我对Firefox,Chrome等上面的代码没有任何问题。但它不适用于任何版本的Internet Explorer。
问题是PNG图像呈现奇怪,透明PNG的背景看起来很黑。当我删除不透明效果时,没有问题。
解决方案是什么?
答案 0 :(得分:11)
对我来说,它只是在jQuery的.animate()函数中包含带有空值的filter属性
也许这对你也有用。
$("#btn").animate({opacity:1,"margin-left":"-25px", filter:''});
此外,您可能必须从按钮的CSS中删除过滤器属性。
答案 1 :(得分:7)
filter:''
hack不再适用于当前的jQuery(1.6.1)
答案 2 :(得分:5)
目前我还没有解决这方面的问题。只需要等待IE赶上世界其他地方。几天前我不得不在最近的一个项目中放弃这样的功能。遗憾的是,你无法使用带有IE淡入淡出和淡出jQuery的边缘PNG。
答案 3 :(得分:4)
我将在这里转发解决方案的三个段落:
当然,没有任何版本的IE支持CSS opacity属性, 所以jQuery改为应用不透明度 通过利用IE专有
AlphaImageLoader
过滤器。这结束了 成为的根本原因 (seemingly well-known)错误。该 建议修复是应用的 父元素的透明度 相反,但我没有成功 解决方法。什么工作是适用的名为DD_belatedPNG的小型库 通过VML代替的PNG透明度
AlphaImageLoader
。它的设计目的 IE6,但它在IE7中工作得很好 好。对于IE8,我被迫抛出 输出X-UA-Compatiblemeta
标记 并为此步骤IE8降低到IE7模式 特别页面。它仍然不完美。我注意到一个微弱的白色边框戳戳 通过强迫的较低的不透明度 我稍微调整悬停效果 适用于所有版本的IE。但是你知道, 尽管如此,它还是非常好的 够了。
Mmmhmmm ...... 6个月前问这个问题时,这个解决方案没有弹出,这很奇怪。当然,这篇博文并不存在,但解决方案已经存在了很长一段时间。很奇怪没有人注意到它......
答案 4 :(得分:2)
我认为这里有一个真正的解决方案: http://www.viget.com/inspire/jquery-ie-png-24-ie-black-background-issue-solved/
在我的情况下,它解决了我的动画png图像上带有透明背景的黑色bg。它就像一个魅力。在ie7 +上测试我暂时无法测试ie6。
希望它能帮助每一个人:) 于连
答案 5 :(得分:2)
将PNG图像用于现代浏览器(mozilla,Opera,Chrome等):
background:url(../images/banner01.png) no-repeat right 13px;
添加此For IE(使用其他CSS或使用IE hack)
/* ie fix */
background-image:none;
filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src="images/banner01.png",
sizingMethod="crop");
答案 6 :(得分:1)
有趣的说明:jQueryTOOLS在所有IE版本中使用GIF作为工具提示的错误修正。 Demo
答案 7 :(得分:0)
有一个库可以解决这个问题:jCSML。我已经尝试过它,它可以在IE 7 +中为透明的png设置动画。
答案 8 :(得分:0)
这里是固定的!更新到最新的jQuery。而已。它之后工作。
答案 9 :(得分:0)
感谢Julien的回答,它引导我朝着正确的方向前进!
然而,在图像不透明度转换期间,我仍然在文本周围出现灰色晕圈。当它是静态时看起来很好,但它仍然会产生一个奇怪的轻微灰色晕(IE 8)。我通过更改为下面的值来修复它。
另外,我必须单独声明“zoom:1”属性,因为IE 8只是将该值粉碎到background
属性的末尾。 background-color: transparent;
IE很糟糕。
我的工作CSS:
.classOfParentElement img {
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#00FFFFFF,endColorstr=#FFFFFFFF)"; /* IE 8 */
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00FFFFFF,endColorstr=#FFFFFFFF); /* IE 6 & 7 */
}
.classOfParentElement img {
-ms-zoom: 1;
zoom: 1;
background-color: transparent;
}
请注意,我必须将endColorstr=#00FFFFFF
更改为endColorstr=#FFFFFFFF
。
重申朱利安,这个解决方案来自Viget.com。