动画不透明度在IE或Opera中不起作用

时间:2010-01-04 21:37:40

标签: jquery internet-explorer opera opacity

我正在尝试使用jQuery插件。我有这个代码淡入“灯箱”:

$('#cleverbox')
    .css({ opacity:0, visibility:'visible' })
    .animate( {opacity:1}, 2000 );

它在Firefox和Chrome上运行良好,但在IE(7和8)和Opera中,元素只是出现而不是消失。在SO上有一堆类似的问题,但我还没有找到一个有效的解决方案

我有example page。我还有一些其他问题:

  1. 在Internet Explorer(7和8)中,第一个缩略图从不显示灯箱(onload事件永远不会触发)。
  2. 在IE7中,修复ClearType错误的代码不起作用。 $(this).css( 'opacity', '' )应删除不透明度样式(在本例中为“filter”属性),但不会将其删除。在IE的开发工具中它仍然有style="filter: ;"
  3. 在Opera中,它一旦加载就永远不会运行。换句话说,如果图像在浏览器缓存中,则onload事件永远不会触发。

2 个答案:

答案 0 :(得分:0)

您是否尝试在'中包装不透明度值,即$(something).animate({opacity:'1'});?每次都适合我。

答案 1 :(得分:0)

由于Opera社区,我找到了修复Opera中的错误。我有这个:

var imgLoad = new Image();
imgLoad.src = linkUrl;
imgLoad.onload = function() {
    //do some stuff here
}

但是,如果图像位于浏览器缓存中,则它永远不会触发,因为加载部分位于onload函数之前。解决方案是将src赋值移到onload函数下面:

var imgLoad = new Image();
imgLoad.onload = function() {
    //do some stuff here
}
imgLoad.src = linkUrl;