我发现当我使用jQuery UI的脉动效果时,脉动会留下锯齿状的文字...经过一些搜索后,它似乎是一个IE错误......我认为它可能与不透明度有关,但是我不确定。
我尝试了以下但不起作用:
$(detail).effect("pulsate", { times: 1 }, 200, function(){
$(this).removeAttr('opacity');
});
有没有人知道一项解决方法?我在这里搜索并发现了与fadein
和fadeout
类似的问题...列出的解决方案是删除过滤器属性。但我也尝试了这一点,似乎没有用。如果我删除样式属性然后它可以工作,但随后我放弃了我的定位: - )
有人有这个问题吗?
对于脉动和fadein和fadeout等同样的修复是什么?我必须承认,我似乎没有得到fadein和fadeout的问题。
Pulsate是我的问题,但它在Firefox中完美运行。
答案 0 :(得分:2)
你的解决方案实际上很接近。您需要做的是删除“过滤器”属性,而不是“不透明度”属性:
$(detail).effect("pulsate", { times: 1 }, 200, function(){
$(this).removeAttr("filter"); });
这将在脉动完成后恢复您的文本。
仅供参考,对于具有任何不透明度区域的PNG图像,将会发生这种情况。 100%也是如此。当不透明度<1时,IE不能正确处理这些区域的合成。 100%,这可能也是清除类型渲染中断的原因。
答案 1 :(得分:2)
只需在CSS中与背景匹配的淡化元素中添加“背景颜色”,然后就不会出现疯狂的锯齿状边缘。为我带来了魅力。
答案 2 :(得分:1)
这是Internet Explorer的一个众所周知的问题。归结起来:IE对元素的不透明度没有任何内置支持。 jQuery试图通过使用“过滤器”来掩盖这一点,过滤器是一种特定于IE的功能,其中元素被渲染成屏幕外图像,然后该图像由一些插件代码处理,最终图像被插回到页面并在(大致)与原始元素相同的位置渲染。它...主要是有效的。但是当绘制到该图像上时,文本不会消除锯齿。
根据您使用的字体,结果可能只是丑陋到完全不可读。
答案 3 :(得分:0)
如果你让不透明度非常接近于零但是从来没有一直为零,它是否有效?
我开始怀疑,由于这些挑战,IE用户是否会开始降低视觉体验。开发人员可能只是为那些不那么难的浏览器保存好东西。
答案 4 :(得分:0)
真的那么重要吗?我必须同意Nosredna的观点,如果你坚持使用IE,那么你将不得不接受这样的古怪渲染。
否则,如果您重新应用已删除的样式属性,以获得定位,该怎么办?这肯定是一个黑客,但如果删除和重新应用样式元素可以强制重绘或其他东西。
答案 5 :(得分:0)
我发现了类似的东西,其中Pulsate离开了不透明度样式,这超出了先前CSS中设置的不透明度。这是在FireFox 8中,使用jQuery UI 1.8.16。 Mark的原始代码适用于一个小的修改:
.removeAttr('style')
而不是'不透明'。如果你有任何其他硬编码风格,那么它也会被删除。