2009-12-08 70 views
1

我一直在Firefox和IE 8中开发我的网站。在主页面(以及摄影和绘图部分)上存在图像悬停效果。您可以在http://www.dgendill.com处看到源代码。在Firefox中,效果完美。在IE 8中,它可以工作,但速度要慢得多。这就是我一直试图提高速度:jQuery悬停和淡入效果在IE 8中缓慢

  1. 使用的优化jQuery库
  2. 缩小了与它的jQuery遍历DOM范围。例如:

    $(".sectionLink","#divLandingPage").hover(
        function(){ 
         $(this).addClass("hover"); 
         $(this).fadeTo(100,.8); 
        }, 
        function(){ 
         $(this).removeClass("hover"); 
         $(this).fadeTo(100,.99); 
        } 
    ); 
    
  3. 我试过改变图像的显示类型。显示块,内嵌块和内联。

IE 8的速度如此之慢的任何想法?我的HTML是有效的4.01。

下面是与同样的问题制定一个家伙: http://mdasblog.wordpress.com/2009/07/24/jquery-fun-with-animation-and-opacity/

我决定只禁用IE浏览器的悬停效果。

if(jQuery.support.opacity) { 
    $(".sectionLink","#divLandingPage").hover(
     function(){ 
      $(this).addClass("hover"); 
      $(this).fadeTo(100,.8); 
    }, 
     function(){ 
      $(this).removeClass("hover"); 
      $(this).fadeTo(100,.99); 
    } 
    ); 
} 
+0

我不认为这是解决方案,但你不需要创建一个window.load事件。您在该事件中所做的所有事情都可以在document.ready事件中完成。 – Joel 2009-12-08 20:31:44

+0

侧面问题:当所有图像完成加载后document.load是否激活?看来我只能在使用window.load时才能使用它。 – user182666 2009-12-08 20:34:42

+0

发现差异:http://4loc.wordpress.com/2009/04/28/documentready-vs-windowload/感谢您的提示,我将切换到其中一个或另一个 – user182666 2009-12-08 20:42:29

回答

0
$(".sectionLink img").hover(function(){ 
     $(this).addClass("hover").fadeTo(100,.8); 
    }, function(){ 
     $(this).removeClass("hover").fadeTo(100,.99); 
    }); 

您可以尝试附加事件处理程序直接上到图像,或者如果这并不帮助下,尝试动画的方法。 一个可能的原因可能是IE不支持opacity作为css属性。

你应该链接代码btw。

load()事件在内容下载和呈现时触发。 ready()事件在文档准备好处理/操作时触发。

+0

感谢您的评论。你是对的,它看起来像一个不透明的问题。我决定在IE中禁用悬停效果。我可能会在未来实现仅CSS的悬停效果。 – user182666 2009-12-08 21:26:46

0

我发现jQuery的动画效果在所有版本的IE中都有问题,当一个元素应用了CSS position属性时。通常在没有应用position属性的情况下将元素包装在div中将解决该问题。更多的信息可以在in jQuery slideToggle and Internet Explorer找到。