首頁 >web前端 >js教程 >Jquery實作圖片預先載入與延時載入的方法_jquery

Jquery實作圖片預先載入與延時載入的方法_jquery

WBOY
WBOY原創
2016-05-16 16:25:19994瀏覽

本文實例講述了Jquery實作圖片預先載入與延時載入的方法。分享給大家供大家參考。具體分析如下:

有很多項目經常會需要判斷圖片加載完成後執行相應的操作,或者需要圖片延遲加載,網上雖然已經有很不錯的插件,但要為這些效果還得單獨加載一個插件的話總感覺有點不舒服,乾脆自己寫了個方法:

複製程式碼


程式碼如下:

function loadimg(arr,funLoading,funOnLoad,funOnErrorad,funOnError){  numError=0,
 isObject=Object.prototype.toString.call(arr)==="[object Object]" ? true : false;
 
 var arr=isObject ? arr.get() : arr;
 for(a in arr){
  var src=isObject ? $(arr[a]).attr("data-src") : arr[a];
  preload(src,arr[a]);
 }
 
 function preload(src,obj){
  var img=new Image();
  img.onload=function(){
   numLoaded ;
   funLoading && funLoading(numLoaded,arr.length,src,obj);
   funOnLoad && numLoaded==arr.length && funOnLoad(numError);
  };
  img.onerror=function(){
   numLoaded ;
   numError ;
   funOnError && funOnError(numLoaded,arr.length,src,obj);
  }
  img.src=src;
 } }


參數說明:

arr:可以是存放圖片路徑的一個數組,也可以是選取的img的jquery物件;

funLoading:每個單獨的圖片載入完成後執行的操作;

funOnLoad:全部圖片都載入完成後的操作;
funOnError:單一圖片載入出錯時的操作。

如: 複製程式碼

程式碼如下:

var imgonload=function(errors){
        /*errors:載入出錯的圖片數量;*/
 console.log("loaded," errors " images loaded error!");
}
 
var funloading=function(n,total,src,obj){
        /*
        n:已載入完成的數量;
        total:總共需要載入的圖片數量;
        src:目前載入完成的圖片路徑;
        obj:當loadimg函數中傳入的arr為存放圖片路徑的陣列時,obj=src,是圖片路徑,
               當arr為jquery物件時,obj是目前已載入完成的img dom物件。
       */
 console.log(n "of" total " pic loaded.",src);
 var newimg = document.createElement("img");
 newimg.src=src;
 $("body").append(newimg).fadeIn();
}
 
var funloading_obj=function(n,total,src,obj){
 console.log(n "of" total " pic loaded.",src);
 $(obj).attr("src",src);
 $(obj).fadeIn(200);
}
 
var funOnError=function(n,total,src,obj){
 console.log("the " n "st img loaded Error!");
}
呼叫範例: 複製程式碼

程式碼如下:

console.log("loading...");
loadimg($("img"),funloading_obj,imgonload,funOnError);
/*loadimg(["http://pic22.nipic.com/20120619/9607634_212642465144_2.jpg",
   "/20120531/1670912_103610084349_2.jpg",
   "/20120616/4952071_130629530136_2.jpg",
   "/20120610/1723580_105037029000_2.jpg",
   "http://pic22.nipic.com/20120617/2572038_125013326121_2.jpg"   ],funloading,imgonload,funOnError);*/


上面算是原生態寫法了,下面我們介紹一個基於Lazy Load, 延遲載入圖片的 jQuery 外掛程式

Lazy Load 依賴 jQuery. 請將下列程式碼加入頁面 head 區域: 複製程式碼

程式碼如下:

你必須修改HTML 代碼. 在src 屬性中設定展位符圖片, demo 頁面使用1x1 像素灰色GIF 圖片. 並且需要將真實圖片的URL 設置到data-original 屬性. 這裡可以定義特定的class 以獲得需要延遲加載的圖片物件. 透過這種方法你可以簡單地控制插件綁定.
複製程式碼 程式碼如下:
Jquery實作圖片預先載入與延時載入的方法_jquery

處理圖片的程式碼如下.
複製程式碼 程式碼如下:
$("img.lazy").lazyload();

這將使所有 class 為 lazy 的圖片將被延遲加載. 可以參考基本選項 demo

設定敏感度


幾乎所有瀏覽器的JavaScript 都是啟動的. 然而可能你仍希望能在不支援JavaScript 的客戶端展示真實圖片. 當瀏覽器不支援JavaScript 時優雅降級, 你可以將真實的圖片片段在寫

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn