防止延迟图像显示

时间:2015-07-08 16:18:20

标签: jquery

我使用jQuery通过鼠标悬停在页面上的某些元素上创建效果。每个元素都有一个" normal" 背景图像,鼠标悬停时,图像会发生变化并加载新的背景图像。将鼠标移出,恢复正常的背景图像。显然,我可以用CSS做同样的事情。但是由于其他考虑因素(例如,我用来触发的元素和页面上的其他效果,jQuery是一个更容易的工具)。

问题是;当事件被触发时,有一个" flash" - 真的,在图像加载时暂停。有趣的是,如果我鼠标移出鼠标,那就毫不犹豫了。当鼠标在一个元素上出现异常,然后鼠标在另一个元素上时,会导致滞后。

有什么方法可以明显地缓解这个问题吗?

使用的代码如下:



      $(function() {
        $(".panel3-sub-button-text > p").hoverIntent(swapInFPP3Text, swapOutFPP3Text, function(){}); 
      });
      
      function swapInFPP3Text(evt) {
		
        // Get the class of the bubble
        $bubble_class = $(this).attr('id');
 
        
        //Swap in the appropriate text for the bubble hovered over
        if ($bubble_class == 'math-bubble-text' ) {
          console.log('>>> Fire rules for: ', $bubble_class);
          $('#panel3-default-text').addClass("hidden");
          $('#panel3-math-text').removeClass("hidden");
          $('#panel3-epidemiology-text').addClass("hidden");
          $('#panel3-hiv-text').addClass("hidden");
          $('#panel3-malari-text').addClass("hidden");
          $('#panel3-polio-text').addClass("hidden");
          $('#panel3-tuberculosis-text').addClass("hidden");
          $('div#math-bubble').css('background-image','url("/sites/default/files/fp_math_bubble_hover.png")');
          $('p#math-bubble-text').css('color','rgb(216, 216, 216)');

        }




2 个答案:

答案 0 :(得分:1)

问题是您的图片需要一些时间来加载。尝试压缩图像。这是唯一的解决方案。如果压缩后速度很慢,请将这些图像替换为尺寸较小的其他图像。

修改

另一件事是,看看

  $('div#math-bubble').css('background-image','url("/sites/default/files/fp_math_bubble_hover.png")');

您正在使用jquery动态加载图像。您可以做的是将此背景图像放入一个类中,隐藏它并在用户将鼠标悬停时显示它。因此,在用户将鼠标悬停在内容上之前加载图像。

答案 1 :(得分:0)

尝试预加载悬停图像(将其放入正文载入或准备好):

var preloaded_image = new Image();
preloaded_image.src = '/sites/default/files/fp_math_bubble_hover.png';