可能重复:
在 IE8 jQuery 循环中消失的图像
我正在淡入和淡出一组嵌套元素,以显示页面的背景图像。嵌套的 div/article 元素已被赋予 alpha 通道不透明度,并且在 IE 中被半透明 png 覆盖。
FF、Chrome、ie6(是的,ie6 !!!)、ie7 和 ie9 中的淡入和淡出工作正常,但遗憾的是在 ie8 中不行。
HTML:
<div id="wrapper">
<div id="limiter">
<div id="mainContent" class="cornerRadius10 alpha40Black">
<header class="cornerRadius6 alpha50Black">
<h1>Title Here</h1>
</header>
<article class="contentArticle cornerRadius6 alpha50Black">
Content here.
</article>
<article class="contentArticle cornerRadius6 alpha50Black">
More content here.
</article>
</div>
</div>
</div>
CSS:
.alpha40Black {
/* Fallback for web browsers that doesn't support RGBa */
background: rgb(0, 0, 0);
background: url("../images/blk-40.png");
/* RGBa with 0.4 opacity */
background: rgba(0, 0, 0, 0.4)
}
.alpha50Black {
/* Fallback for web browsers that doesn't support RGBa */
background: rgb(0, 0, 0);
background: url("../images/blk-50.png");
/* RGBa with 0.5 opacity */
background: rgba(0, 0, 0, 0.5)
}
jQuery:
$('#wrapper').children().animate({
opacity: 0
}, 2000 );
setTimeout(function() {
$('#wrapper').css('visibility' , 'hidden');
}, 2000);
我也试过这个jQuery:
$('#limiter').children().fadeOut( 2000 );
上述的任何组合都将适用于除 ie8 之外的所有浏览器。当您尝试将淡出或淡入功能应用于包装父元素时,所发生的只是有一个暂停(淡出动画设置的时间长度),然后您想要淡出的元素立即消失,没有淡化效果。
我已经为此工作了几天,并用尽谷歌的解决方案和可能的修复/解决方法,甚至没有什么能接近。
有人有想法么?
问候,马特。
编辑:
我在调试这个问题方面取得了一些进展。
我删除了对半透明背景的所有引用,并尝试应用 jQuery 淡入淡出动画来检查背景是否没有掩盖真正的问题。
有趣的是,即使没有应用半透明背景(也测试了完全不透明的背景),淡入淡出动画仍然不起作用。完全一样的症状。所以我快速搜索并在 jQuery Bug Tracker 上找到了这个:fade not working on inner divs in ie8
根据此页面上的评论,我申请filter: inherit;
了子容器,这有所作为。现在内容(文本和图像)淡入淡出,但背景(不透明或(半)透明)不是。它在延迟期间仍然保持不变,然后突然变为不可见。
有人对如何进一步解决此问题有任何想法吗?
编辑:
在ie9中测试,它工作得很好。此错误仅与 ie8 相关。
谢谢,马特。