懒加载

来源:互联网 发布:href中调用javascript 编辑:程序博客网 时间:2024/06/06 08:38

在各种门户网站中,都有大量的图片,尤其是电子商务网站,更多的产品图片,这个时候如果直接访问主页的话,会有很多的图片需要浏览器下载,特别是在网速不好的情况话,打开一个网站需要很长的时间,比如京东首页,而且在很多情况下,用户是不会看网站的每一个图片的,用户只是挑选自己感兴趣的产品,这种情况下,就会有很多的带宽浪费,还会带来不好的用好体验。

         于是图片懒加载的技术就出来了,懒加载是表示只是在用户需要看指定的图片时,才会加载,比如京东首页下面的很多产品和其他tab页。只有用户拉动滚动条到页面下面时才会加载相应的图片(tab类似,在点击tab标题时加载)。说到这,应该聪明的读者都已经明白了相应的技术。对,就是在页面加载的时候把页面中的图片src属性为空,在拉动滚动条时候判断当前图片是否在用户的可视窗口内,如果是,则把图片的src属性赋相应的值,这个时候才去加载图片。

大概的思路就是创建个div 、然后滚动条事件绑定  检测显示的页面div是否在一个高度的条件内、在给图片的src赋值。

document.body.clientHeight ==> BODY对象高度
document.documentElement.clientWidth ==> 可见区域宽度

得到滚动条的总长属性值:scrollHeight,还有滚动条当前位置属性 值:scrollTop。


[javascript] view plaincopy
  1. <script src="jquery-1.7.1.min.js"></script>  



[css] view plaincopy
  1. <style type="text/css">  
  2. #lazyLoadImage img{ width:159pxheight:71pxborder:1px solid #CCCCCCpadding:3pxfloat:leftmargin:10pxvisibility:visible;opacity:0.00;filter:alpha(opacity=00);-moz-opacity:0.0;}  
  3. </style>  



filter:alpha(opacity=00);是 ie的、

-moz-opacity:0.0; 是ff的、


[html] view plaincopy
  1. <script>  
  2. function imgLazyLoad(){//扫描需要加载的div  
  3.     $.each($("#lazyLoadImage img"),function(i,o){         
  4.         //获取窗口高       
  5.         var windowHeight=$(window).height();  
  6.         //获取滚动条  
  7.         var scrollTop=$(document).scrollTop();  
  8.         windowHeight=windowHeight; //可以设置滚动条在显示某个高度来lazyload   windowHeight=windowHeight/2; 比如在显示屏幕高度2分之1的时候加载  
  9.           
  10.           
  11.         //先判断是否是加载完的图片 跳出  
  12.         if($(o).attr("src")==$(o).attr("pic")){  
  13.             return true;  
  14.         }else if( $(o).offset().top<=(scrollTop+windowHeight)  && $(o).offset().top >= scrollTop ){//判断div是不是出在可见的位置  
  15.             if($(o).attr("pic") != undefined || $(o).attr("pic") != "undefined" ){  
  16.                 var ObjectSrc = $(o).attr("pic");  
  17.                 //把pic的值赋给src值  
  18.                 $(o).attr("src",ObjectSrc);  
  19.                 //css属性改为可见  
  20.                 $(o).css("visibility","visible");  
  21.                 //渐变时间和渐变值  
  22.                 $(o).fadeTo(1000,1.00);  
  23.             }  
  24.         }                 
  25.     });   
  26. }  
  27. $(function(){//页面第一次加载时  
  28.     imgLazyLoad();//初始化  
  29.     //判断浏览器  
  30.     if($.browser.msie){  
  31.         //IE浏览器  
  32.         $(window).scroll(imgLazyLoad);//浏览器的兼容  
  33.     }else {  
  34.         //其他浏览器 ff chrome 测试通过  
  35.         $(document).scroll(imgLazyLoad);//当滚动条滚动时,扫描需要加载的div  
  36.     }  
  37.       
  38.     //$("body").scroll(imgLazyLoad);//浏览器的兼容   不清楚是哪款浏览器  
  39. });  
  40. </script>  
  41.   
  42.   
  43.   
  44.   
  45. <div id="lazyLoadImage">  
  46. <img pic="http://csdnimg.cn/www/images/csdnindex_logo.gif"/>  
  47. <img pic="http://csdnimg.cn/www/images/csdnindex_logo.gif"/>  
  48. <img pic="http://csdnimg.cn/www/images/csdnindex_logo.gif"/>  
  49. <img pic="http://csdnimg.cn/www/images/csdnindex_logo.gif"/>  
  50. <img pic="http://csdnimg.cn/www/images/csdnindex_logo.gif"/>  
  51. <img pic="http://csdnimg.cn/www/images/csdnindex_logo.gif"/>  
  52. <img pic="http://csdnimg.cn/www/images/csdnindex_logo.gif"/>  
  53. <img pic="http://csdnimg.cn/www/images/csdnindex_logo.gif"/>  
  54. <img pic="http://csdnimg.cn/www/images/csdnindex_logo.gif"/>  
  55. ...请批量复制多个图片  
  56. <div>  

0 0