使用jQuery时Internet Explorer 7中的褪色问题

使用jQuery时Internet Explorer 7中的褪色问题,jquery,internet-explorer,opacity,Jquery,Internet Explorer,Opacity,我在一个我正在工作的网站上使用jQuery,一切都很好——除了InternetExplorer7(和以前的版本,但该网站不支持它们)。 看看Safari或Firefox,然后看看IE7,你就会明白我的意思。我目前正在使用内置的效果FadeTo淡入内容,但我也尝试创建自定义效果,以及使用显示/隐藏、动画和FadeUp/FadeDown。 我在这个网站上也使用了SWFaddress,这可能会导致与IE7结合时出现错误,但这不会在其他浏览器中也出现吗? 我错过了什么 -Staffan我已经成功地在IE

我在一个我正在工作的网站上使用jQuery,一切都很好——除了InternetExplorer7(和以前的版本,但该网站不支持它们)。 看看Safari或Firefox,然后看看IE7,你就会明白我的意思。我目前正在使用内置的效果FadeTo淡入内容,但我也尝试创建自定义效果,以及使用显示/隐藏、动画和FadeUp/FadeDown。 我在这个网站上也使用了SWFaddress,这可能会导致与IE7结合时出现错误,但这不会在其他浏览器中也出现吗? 我错过了什么


-Staffan

我已经成功地在IE6及以上版本中完成了show/hide、fadeTo、fadeUp和fadeDown的所有工作。我发现我在动画中遇到的很多问题都涉及到显示一个元素,这些问题都与加载时没有隐藏的元素有关


尝试将淡入的元素(表或div)设置为html或编程中的style=“display:none”。

也许这是一个很好的解决方案(对我来说是)。解决方案简单但有效(而且非常好)。IE的父对象背景没有颜色(总透明度)时,其alpha透明度存在问题

我们在这里要做的(参见下面的示例)是首先添加一个几乎透明(对眼睛透明)的div。因为它是画布/容器(=>例如一个div)中的第一个div,并且它是绝对放置的,所以该div之后的所有内容都将放置在第一个div的顶部,所以这将成为该画布中所有其他内容的背景

因为现在有了背景,IE在淡入淡出(更改不透明度时)或将画布的不透明度设置为低于100的值时,不会显示令人讨厌的黑点(像素)或黑色区域

如何操作-100x100图像示例:

<div id="mycanvas" style="display:none;">
<div style="position:absolute; background:#FFF; display:block; filter:alpha(opacity=1); opacity:0; width:100px; height:100px;">
</div>
<img id="myImage" src="example.png" width="100" height="100"/>
</div>
// This causes this text glich
$("#message").fadeIn();

// This will fix it
document.getElementById("#message").style.removeAttribute("filter");
这也是可能的:

$("myImage").fadeIn("slow");
就这样

很好的一点是,该解决方案还可以与VML/SVG(Raphael)或其他具有alpha透明度的内容一起使用。此外,您不必更改/破解JS代码,因为这种“破解”不会影响其他浏览器


希望有帮助。

字体Cleartype与淡入淡出jQuery的问题

这是对确切问题的一个很好的解释。 这与IE中的清晰字体有关。 这是我用过的修复方法

示例:

<div id="mycanvas" style="display:none;">
<div style="position:absolute; background:#FFF; display:block; filter:alpha(opacity=1); opacity:0; width:100px; height:100px;">
</div>
<img id="myImage" src="example.png" width="100" height="100"/>
</div>
// This causes this text glich
$("#message").fadeIn();

// This will fix it
document.getElementById("#message").style.removeAttribute("filter");
修复方法是移除过滤器。

$('#message').fadeIn(function(){
    this.style.removeAttribute("filter");
});

我发现,最有效的方法是简单地应用背景。。。把它想象成GIF。所以没有jQuery。纯CSS

我想我现在有了一个解决方案,在SWFaddress作者的帮助下。他提到该脚本中的一个片段可能会导致IE7中的错误(最有可能是与jQuery结合时)。我删除了它,内容淡入淡出,尽管它不是抗锯齿的。但这是另一个问题:)是的,别名可能是由于ClearType造成的,这对IE来说不太好。它是由于clear type造成的,只需要删除过滤器。我举了一个例子,这为我解决了一个类似的问题。回答得好!您的链接返回404未找到。