1

我有 LI 我想淡出并重新加入。在列表项中我有一些文本。此文本绝对位于 LI 内。

问题是在 IE8(IE6 和 7 看起来不错)中,除了文本之外,我可以让所有内容都消失:

http://jsbin.com/esamu/13

如果我删除文本元素上的绝对定位(在本例中为 P),则 IE8 可以正确淡化文本:

http://jsbin.com/esamu/14

有谁知道这是为什么?有人知道修复吗?

更新:

如果文本完全定位,这似乎是 IE8 中的一个普遍问题。所以,不是绝对的。我有一种预感,这是由于 cleartype fade 错误造成的。

4

4 回答 4

7

通过定位文本,IE8 不会继承不透明度。实际上,我认为这与 cleartype 错误不是同一个问题。

我已经用一个有效的脚本更新了你的脚本:http: //jsbin.com/esamu/19

我所做的只是将 $('li') 更改为 $('li,p') ,因此它明确选择了定位元素。

于 2010-03-24T04:54:05.533 回答
2

arnie 和 prodigit 都提供了有用的替代方案。谢谢!

最后,这是我们提出的相当愚蠢的解决方案:

在我们的例子中,我们有一系列 LI,其中包含一个图像,上面有分层(定位)的文本。我们淡出整个 LI,完成后,我们淡入下一个。

问题是文本不会在 IE8(也许是 7)中正确淡出/淡入。解决方法是,我们不是淡出每个 LI,而是淡入恰好与背景匹配顶部图像(我称之为“IE 淡入淡出蒙版”)。一旦该图像完全淡入,我们就换掉背景中的 LI,然后淡出前面的图像。

这给了我们完全相同的视觉外观,加上在 IE 中保持平滑的类型的好处。

我认为这也可以用于将 LI 淡入另一个(让一个淡出与另一个淡入同时淡出),并且只需要为每个 LI 克隆“IE淡入淡出掩码”。

于 2010-03-24T15:13:36.757 回答
1

不知道为什么,但您是否尝试过简单地添加元数据以强制 IE* 呈现为 IE7 以进行快速修复?

于 2010-03-23T20:37:47.707 回答
1

我在 ie8 中的绝对定位文本也遇到了同样的问题(ie7, 6 很好),我通过将 z-index 分配给淡入的元素和降低淡出的元素来解决它:

$('#fadeoutdiv').css({zIndex:7}).fadeOut(2000); $('#fadeindiv').css({zIndex:6}).fadeOut(2000);

这个解决方案归功于 Al Flemming。

于 2010-11-10T23:19:25.760 回答