jquery插件lazyload.js延遲加載圖片的使用方法
如果一個網(wǎng)頁很長并且有很多圖片的話,下載圖片就需要很多時間,那么就會影響整個網(wǎng)頁的加載速度,而這款延遲加載插件,會通過你的滾動情況來加載你需要看的圖片,然后它才會從后臺請求下載圖片,最后顯示出來。通過這個插件,可以在需要顯示圖片的時候,才下載圖片,從而可以減少服務(wù)器的壓力,提高頁面加載速度。
Lazy Load 插件原理
修改目標(biāo)img元素的src屬性為orginal屬性,從而中斷圖片的加載。檢測滾動狀態(tài),然后把網(wǎng)頁可視區(qū)域中的img的src屬性還原然后加載圖片,從而制造了一種緩沖加載的效果。代碼引入方法:
<script type="text/javascript" src="js/jquery-1.8.3.min.js"></script>
<script type="text/javascript" src="js/jquery.lazyload.js"></script>
<script type="text/javascript">
$(document).ready(
function($){
$("img").lazyload({
placeholder : "images/grey.gif", //加載圖片前的占位圖片
effect : "fadeIn" //加載圖片使用的效果(淡入)
});
});
</script>
但是現(xiàn)在,很多Javascript大牛分析得出,這個插件其實并沒有真正的起到緩加載的作用。確實是這樣,官方也已經(jīng)給出了說明和解決方法了。
其實原因就在于在新版的瀏覽器中,即使我們刪除了Javascript控制的src屬性,瀏覽器仍然會去加載這個圖像。
那么我們該怎么解決呢?其實也很簡單,需要直接修改HTML的結(jié)構(gòu),在img標(biāo)簽中添加新的屬性,把src屬性的值指向占位圖片,添加data-original屬性,讓其指向真正的圖像地址。比如:
<img src="img/grey.gif" data-original="img/example.jpg" >
當(dāng)然,在上面的代碼中我們把頁面內(nèi)的所有圖片都延遲加載了,但有些時候我們并不希望這樣,因為有些圖片并不想然他們延遲加載,那么我們可以這樣只需做:
如只緩沖加載類main下的圖像
$(".main img").lazyload({
placeholder : "images/grey.gif",
effect : "fadeIn"
});
加載掛載有l(wèi)azy類的圖像:
$("img.lazy").lazyload({
placeholder : "images/grey.gif",
effect : "fadeIn"
});
其他的以此類推,適當(dāng)做一下選擇器調(diào)整就行了。
lazyload.js 高級使用方法:
下面部分來自官方文檔,將官方文檔進行了一下簡單的翻譯。
更周全的做法
我們不得不思考這樣一個問題。我們定義了這樣一個結(jié)構(gòu),那么網(wǎng)頁中,就不會加載源圖像了。只有當(dāng) Javascript 執(zhí)行,才會顯示這個源圖像。如果用戶的瀏覽器不支持或者用戶關(guān)掉了支持 Javascript 的選項,那么我們的這個圖像就無法顯示出來。也就是說,如果沒有 Javascript 的支持,我們的圖像就無法顯示出來。
應(yīng)對這個問題,我們需要引入noscript 標(biāo)簽。大體思路如下:用 noscript 包含真實的圖像位置,當(dāng)瀏覽器不支持 Javascript,直接顯示圖像。
<img class="lazy" src="img/grey.gif" data-original="img/example.jpg" width="640" heigh="480">
<noscript><img src="img/example.jpg" width="640" heigh="480"></noscript>
對現(xiàn)有圖像,隱藏處理,使用 show()方法觸發(fā)顯示。
.lazy {
display: none;
}
這樣,如果瀏覽器不支持 Javascript,我們自定義的 img 就不會出現(xiàn),而顯示 noscript 里面的圖像。具體實現(xiàn)代碼如下:
$("img.lazy").show().lazyload();
提前加載
默認(rèn)的情況是,當(dāng)你滾動到圖片位置的時候,插件開始加載。這樣,用戶可能首先看到的是一個空白圖像,然后再緩慢出現(xiàn)。如果你想在用戶滾動之前,提前加載這個圖像,你可以配置一下參數(shù)。
$("img.lazy").lazyload({
threshold : 200
});
threshold 這個參數(shù),就是用來提前加載的。上面這個語句的意思是,當(dāng)距離圖片還有200像素的時候,就開始加載圖片。
自定義觸發(fā)事件
默認(rèn)的觸發(fā)事件,是滾動,當(dāng)你滾動的時候,就會檢查然后加載。你可以使用event屬性,設(shè)置你自己的加載事件,之后你可以自定義觸發(fā)這個事件的條件,然后去加載圖像。
$("img.lazy").lazyload({
event : "click"
});
自定義顯示效果
默認(rèn)的圖片實現(xiàn)效果,就是沒有效果,下載完成之后,直接顯示出來。這樣的用戶體驗并不好,你可以設(shè)置effect屬性,來控制顯示圖片的效果。例如
$("img.lazy").lazyload({
effect : "fadeIn"
});
fadeIn的效果就是,改變圖片的透明度,漸現(xiàn)的方式出現(xiàn)。
把圖像插入某個容器
大家如果使用智能手機的話,經(jīng)常去應(yīng)用網(wǎng)站下載應(yīng)用,他們通常使用一個橫著的容器,放一些手機截圖。使用container屬性,能很輕松在容器中實現(xiàn)緩沖加載。首先,我們需要用css定義這個容器,然后用這個插件進行加載。
#container { height: 600px; overflow: scroll; }
$("img.lazy").lazyload({
container: $("#container")
});
加載不可見圖像
有部分圖像是不可見的,我們對其加上類似 display:none;等屬性的圖像。默認(rèn)的情況下,這個插件是不會加載隱藏的不可見圖像。如果我們需要用它加載不可見圖像,我們需要將 skip_invisible設(shè)置為false,代碼如下:
$("img.lazy").lazyload({
skip_invisible : false
});
好了,這就是lazyload.js這款插件的簡單介紹了。
相關(guān)文章
jquery學(xué)習(xí)筆記 用jquery實現(xiàn)無刷新登錄
為了防止以后好久不用生疏,在這里記下,供剛開始學(xué)習(xí)jquery的童鞋們借鑒,我也是剛開始學(xué)jquery,有什么寫的不對的地方,還請大家指出錯誤,共同進步。2011-08-08
基于jQuery Bar Indicator 插件實現(xiàn)進度條展示效果
這篇文章主要介紹了基于jQuery Bar Indicator 插件實現(xiàn)進度條展示效果的相關(guān)資料,需要的朋友可以參考下2015-09-09
jquery判斷checkbox是否選中及改變checkbox狀態(tài)的實現(xiàn)方法
下面小編就為大家?guī)硪黄猨query判斷checkbox是否選中及改變checkbox狀態(tài)的實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-05-05
分享2個jQuery插件--jquery.fileupload與artdialog
這篇文章主要介紹了分享2個jQuery插件--jquery.fileupload與artdialog的使用方法及示例,非常的實用,這里推薦給大家。2014-12-12
jQuery+canvas實現(xiàn)簡單的球體斜拋及顏色動態(tài)變換效果
這篇文章主要介紹了jQuery+canvas實現(xiàn)簡單的球體斜拋及顏色動態(tài)變換效果,通過jQuery+html5的canvas利用時間函數(shù)進行實時數(shù)學(xué)運算動態(tài)繪制拋物線圖形的技巧,需要的朋友可以參考下2016-01-01

