jquery插件lazyload.js延遲加載圖片的使用方法

如果一個(gè)網(wǎng)頁很長(zhǎng)并且有很多圖片的話橄务,下載圖片就需要很多時(shí)間误债,那么就會(huì)影響整個(gè)網(wǎng)頁的加載速度票编,而這款延遲加載插件月腋,會(huì)通過你的滾動(dòng)情況來加載你需要看的圖片蟀架,然后它才會(huì)從后臺(tái)請(qǐng)求下載圖片,最后顯示出來榆骚。通過這個(gè)插件片拍,可以在需要顯示圖片的時(shí)候,才下載圖片妓肢,從而可以減少服務(wù)器的壓力捌省,提高頁面加載速度。

Lazy Load 插件原理(這里一定要注意5锬啤8倩骸!)

修改目標(biāo)img元素的src屬性為orginal屬性喊废,從而中斷圖片的加載祝高。檢測(cè)滾動(dòng)狀態(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大牛分析得出,這個(gè)插件其實(shí)并沒有真正的起到緩加載的作用陆蟆。確實(shí)是這樣雷厂,官方也已經(jīng)給出了說明和解決方法了。

其實(shí)原因就在于在新版的瀏覽器中叠殷,即使我們刪除了Javascript控制的src屬性改鲫,瀏覽器仍然會(huì)去加載這個(gè)圖像。

那么我們?cè)撛趺唇鉀Q呢林束?其實(shí)也很簡(jiǎn)單钩杰,需要直接修改HTML的結(jié)構(gòu),在img標(biāo)簽中添加新的屬性诊县,把src屬性的值指向占位圖片讲弄,添加data-original屬性,讓其指向真正的圖像地址依痊。比如:

![](img/grey.gif)

當(dāng)然避除,在上面的代碼中我們把頁面內(nèi)的所有圖片都延遲加載了,但有些時(shí)候我們并不希望這樣胸嘁,因?yàn)橛行﹫D片并不想讓他們延遲加載瓶摆,那么我們可以這樣只需做:

$(".main img").lazyload({
     placeholder : "images/grey.gif",
     effect      : "fadeIn"
});

這樣就限定了圖片延遲加載的范圍
或者也可以這樣

$("img.lazy").lazyload({
     placeholder : "images/grey.gif",
     effect      : "fadeIn"
});

其他的以此類推,適當(dāng)做一下選擇器調(diào)整就行了性宏。

lazyload.js 高級(jí)使用方法:

下面部分來自官方文檔
我們不得不思考這樣一個(gè)問題群井。我們定義了這樣一個(gè)結(jié)構(gòu),那么網(wǎng)頁中毫胜,就不會(huì)加載源圖像了书斜。只有當(dāng) Javascript 執(zhí)行,才會(huì)顯示這個(gè)源圖像酵使。如果用戶的瀏覽器不支持或者用戶關(guān)掉了支持 Javascript 的選項(xiàng)荐吉,那么我們的這個(gè)圖像就無法顯示出來。也就是說口渔,如果沒有 Javascript 的支持样屠,我們的圖像就無法顯示出來。

應(yīng)對(duì)這個(gè)問題缺脉,我們需要引入noscript 標(biāo)簽痪欲。大體思路如下:用 noscript 包含真實(shí)的圖像位置,當(dāng)瀏覽器不支持 Javascript攻礼,直接顯示圖像业踢。

![](img/grey.gif)
<noscript>![](img/example.jpg)</noscript>

對(duì)現(xiàn)有圖像,隱藏處理秘蛔,使用 show()方法觸發(fā)顯示陨亡。

.lazy {
  display: none;
}

這樣傍衡,如果瀏覽器不支持 Javascript深员,我們自定義的 img 就不會(huì)出現(xiàn)负蠕,而顯示 noscript 里面的圖像。具體實(shí)現(xiàn)代碼如下:

$("img.lazy").show().lazyload();

提前加載

默認(rèn)的情況是倦畅,當(dāng)你滾動(dòng)到圖片位置的時(shí)候遮糖,插件開始加載。這樣叠赐,用戶可能首先看到的是一個(gè)空白圖像欲账,然后再緩慢出現(xiàn)。如果你想在用戶滾動(dòng)之前芭概,提前加載這個(gè)圖像赛不,你可以配置一下參數(shù)。

$("img.lazy").lazyload({
    threshold : 200
});

threshold 這個(gè)參數(shù)罢洲,就是用來提前加載的踢故。上面這個(gè)語句的意思是,當(dāng)距離圖片還有200像素的時(shí)候惹苗,就開始加載圖片殿较。

自定義觸發(fā)事件

默認(rèn)的觸發(fā)事件,是滾動(dòng)桩蓉,當(dāng)你滾動(dòng)的時(shí)候淋纲,就會(huì)檢查然后加載。你可以使用event屬性院究,設(shè)置你自己的加載事件洽瞬,之后你可以自定義觸發(fā)這個(gè)事件的條件,然后去加載圖像业汰。

$("img.lazy").lazyload({
    event : "click"
});

自定義顯示效果

默認(rèn)的圖片實(shí)現(xiàn)效果片任,就是沒有效果,下載完成之后蔬胯,直接顯示出來对供。這樣的用戶體驗(yàn)并不好,你可以設(shè)置effect屬性氛濒,來控制顯示圖片的效果产场。例如

$("img.lazy").lazyload({
    effect : "fadeIn"
});

fadeIn的效果就是,改變圖片的透明度舞竿,漸現(xiàn)的方式出現(xiàn)京景。

把圖像插入某個(gè)容器

大家如果使用智能手機(jī)的話,經(jīng)常去應(yīng)用網(wǎng)站下載應(yīng)用骗奖,他們通常使用一個(gè)橫著的容器确徙,放一些手機(jī)截圖醒串。使用container屬性,能很輕松在容器中實(shí)現(xiàn)緩沖加載鄙皇。首先芜赌,我們需要用css定義這個(gè)容器,然后用這個(gè)插件進(jìn)行加載伴逸。

#container { height: 600px; overflow: scroll; }
$("img.lazy").lazyload({
    container: $("#container")
});

加載不可見圖像

有部分圖像是不可見的缠沈,我們對(duì)其加上類似 display:none;等屬性的圖像。默認(rèn)的情況下错蝴,這個(gè)插件是不會(huì)加載隱藏的不可見圖像洲愤。如果我們需要用它加載不可見圖像,我們需要將 skip_invisible設(shè)置為false顷锰,代碼如下:

$("img.lazy").lazyload({
    skip_invisible : false
});

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末柬赐,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子官紫,更是在濱河造成了極大的恐慌肛宋,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,914評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件万矾,死亡現(xiàn)場(chǎng)離奇詭異悼吱,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)良狈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評(píng)論 2 383
  • 文/潘曉璐 我一進(jìn)店門后添,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人薪丁,你說我怎么就攤上這事遇西。” “怎么了严嗜?”我有些...
    開封第一講書人閱讀 156,531評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵粱檀,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我漫玄,道長(zhǎng)茄蚯,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,309評(píng)論 1 282
  • 正文 為了忘掉前任睦优,我火速辦了婚禮渗常,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘汗盘。我一直安慰自己皱碘,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評(píng)論 5 384
  • 文/花漫 我一把揭開白布隐孽。 她就那樣靜靜地躺著癌椿,像睡著了一般健蕊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上踢俄,一...
    開封第一講書人閱讀 49,730評(píng)論 1 289
  • 那天缩功,我揣著相機(jī)與錄音,去河邊找鬼褪贵。 笑死掂之,一個(gè)胖子當(dāng)著我的面吹牛抗俄,可吹牛的內(nèi)容都是我干的脆丁。 我是一名探鬼主播,決...
    沈念sama閱讀 38,882評(píng)論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼动雹,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼槽卫!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起胰蝠,我...
    開封第一講書人閱讀 37,643評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤歼培,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后茸塞,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體躲庄,經(jīng)...
    沈念sama閱讀 44,095評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評(píng)論 2 325
  • 正文 我和宋清朗相戀三年钾虐,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了噪窘。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,566評(píng)論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡效扫,死狀恐怖倔监,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情菌仁,我是刑警寧澤浩习,帶...
    沈念sama閱讀 34,253評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站济丘,受9級(jí)特大地震影響谱秽,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜摹迷,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評(píng)論 3 312
  • 文/蒙蒙 一疟赊、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧泪掀,春花似錦听绳、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽头岔。三九已至,卻和暖如春鼠证,著一層夾襖步出監(jiān)牢的瞬間峡竣,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評(píng)論 1 264
  • 我被黑心中介騙來泰國(guó)打工量九, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留适掰,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,248評(píng)論 2 360
  • 正文 我出身青樓荠列,卻偏偏與公主長(zhǎng)得像类浪,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子肌似,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容