lazyLoad 懶載入 圖片例子
阿新 • • 發佈:2019-01-01
因為專案與圖片資源伺服器分離,而首頁若是全部載入圖片的話會很慢、所以研究了一下懶載入的例子,然後適用到了專案中。
大概的思路就是建立個div 、然後滾動條事件繫結 檢測顯示的頁面div是否在一個高度的條件內、在給圖片的src賦值、
需要jquery.js 我的版本是1.7.1min
<script src="jquery-1.7.1.min.js"></script>
<style type="text/css"> #lazyLoadImage img{ width:159px; height:71px; border:1px solid #CCCCCC; padding:3px; float:left; margin:10px; visibility:visible;opacity:0.00;filter:alpha(opacity=00);-moz-opacity:0.0;} </style>
filter:alpha(opacity=00);是 ie的、
-moz-opacity:0.0; 是ff的、
<script> function imgLazyLoad(){//掃描需要載入的div $.each($("#lazyLoadImage img"),function(i,o){ //獲取視窗高 var windowHeight=$(window).height(); //獲取滾動條 var scrollTop=$(document).scrollTop(); windowHeight=windowHeight; //可以設定滾動條在顯示某個高度來lazyload windowHeight=windowHeight/2; 比如在顯示螢幕高度2分之1的時候載入 //先判斷是否是載入完的圖片 跳出 if($(o).attr("src")==$(o).attr("pic")){ return true; }else if( $(o).offset().top<=(scrollTop+windowHeight) && $(o).offset().top >= scrollTop ){//判斷div是不是出在可見的位置 if($(o).attr("pic") != undefined || $(o).attr("pic") != "undefined" ){ var ObjectSrc = $(o).attr("pic"); //把pic的值賦給src值 $(o).attr("src",ObjectSrc); //css屬性改為可見 $(o).css("visibility","visible"); //漸變時間和漸變值 $(o).fadeTo(1000,1.00); } } }); } $(function(){//頁面第一次載入時 imgLazyLoad();//初始化 //判斷瀏覽器 if($.browser.msie){ //IE瀏覽器 $(window).scroll(imgLazyLoad);//瀏覽器的相容 }else { //其他瀏覽器 ff chrome 測試通過 $(document).scroll(imgLazyLoad);//當滾動條滾動時,掃描需要載入的div } //$("body").scroll(imgLazyLoad);//瀏覽器的相容 不清楚是哪款瀏覽器 }); </script> <div id="lazyLoadImage"> <img pic="http://csdnimg.cn/www/images/csdnindex_logo.gif"/> <img pic="http://csdnimg.cn/www/images/csdnindex_logo.gif"/> <img pic="http://csdnimg.cn/www/images/csdnindex_logo.gif"/> <img pic="http://csdnimg.cn/www/images/csdnindex_logo.gif"/> <img pic="http://csdnimg.cn/www/images/csdnindex_logo.gif"/> <img pic="http://csdnimg.cn/www/images/csdnindex_logo.gif"/> <img pic="http://csdnimg.cn/www/images/csdnindex_logo.gif"/> <img pic="http://csdnimg.cn/www/images/csdnindex_logo.gif"/> <img pic="http://csdnimg.cn/www/images/csdnindex_logo.gif"/> ...請批量複製多個圖片 <div>