我有 LI 我想淡出并重新加入。在列表项中我有一些文本。此文本绝对位于 LI 内。
问题是在 IE8(IE6 和 7 看起来不错)中,除了文本之外,我可以让所有内容都消失:
如果我删除文本元素上的绝对定位(在本例中为 P),则 IE8 可以正确淡化文本:
有谁知道这是为什么?有人知道修复吗?
更新:
如果文本完全定位,这似乎是 IE8 中的一个普遍问题。所以,不是绝对的。我有一种预感,这是由于 cleartype fade 错误造成的。
我有 LI 我想淡出并重新加入。在列表项中我有一些文本。此文本绝对位于 LI 内。
问题是在 IE8(IE6 和 7 看起来不错)中,除了文本之外,我可以让所有内容都消失:
如果我删除文本元素上的绝对定位(在本例中为 P),则 IE8 可以正确淡化文本:
有谁知道这是为什么?有人知道修复吗?
更新:
如果文本完全定位,这似乎是 IE8 中的一个普遍问题。所以,不是绝对的。我有一种预感,这是由于 cleartype fade 错误造成的。
通过定位文本,IE8 不会继承不透明度。实际上,我认为这与 cleartype 错误不是同一个问题。
我已经用一个有效的脚本更新了你的脚本:http: //jsbin.com/esamu/19
我所做的只是将 $('li') 更改为 $('li,p') ,因此它明确选择了定位元素。
arnie 和 prodigit 都提供了有用的替代方案。谢谢!
最后,这是我们提出的相当愚蠢的解决方案:
在我们的例子中,我们有一系列 LI,其中包含一个图像,上面有分层(定位)的文本。我们淡出整个 LI,完成后,我们淡入下一个。
问题是文本不会在 IE8(也许是 7)中正确淡出/淡入。解决方法是,我们不是淡出每个 LI,而是淡入恰好与背景匹配的顶部图像(我称之为“IE 淡入淡出蒙版”)。一旦该图像完全淡入,我们就换掉背景中的 LI,然后淡出前面的图像。
这给了我们完全相同的视觉外观,加上在 IE 中保持平滑的类型的好处。
我认为这也可以用于将 LI 淡入另一个(让一个淡出与另一个淡入同时淡出),并且只需要为每个 LI 克隆“IE淡入淡出掩码”。
不知道为什么,但您是否尝试过简单地添加元数据以强制 IE* 呈现为 IE7 以进行快速修复?
我在 ie8 中的绝对定位文本也遇到了同样的问题(ie7, 6 很好),我通过将 z-index 分配给淡入的元素和降低淡出的元素来解决它:
$('#fadeoutdiv').css({zIndex:7}).fadeOut(2000);
$('#fadeindiv').css({zIndex:6}).fadeOut(2000);
这个解决方案归功于 Al Flemming。