lazyload.js怎么用

今天看了一片關(guān)于圖片延遲加載的文章闷祥,我也是把我的一部分經(jīng)驗(yàn)給寫一下吧娱颊。
項(xiàng)目中其實(shí)用的最多的就是lazyload.js這個(gè)文件了傲诵,用它來(lái)實(shí)現(xiàn)延遲加載,我看了一些新人還不是很會(huì)使用這款插件箱硕,那我這里就大概講一下拴竹。

Lazy Load 插件原理

修改目標(biāo) img 的 src 屬性為 orginal 屬性,從而中斷圖片的加載剧罩。檢測(cè)滾動(dòng)狀態(tài)栓拜,然后把可視網(wǎng)頁(yè)中的 img 的 src 屬性還原加載圖片,制造緩沖加載的效果惠昔。
  但是現(xiàn)在幕与,很多javascript大牛分析得出,這個(gè)插件其實(shí)并沒(méi)有真正的緩加載效果镇防。確實(shí)是這樣啦鸣,官方也已經(jīng)給出了說(shuō)明和解決方法了。
  問(wèn)題原因:在新版的瀏覽器中来氧,即使你刪除了 Javascript 控制的 src 屬性诫给,瀏覽器仍然會(huì)去加載這個(gè)圖像。
  解決方法:直接修改 HTML 的結(jié)構(gòu)啦扬,在 img 標(biāo)簽中添加新的屬性中狂,把 src 屬性的值指向占位圖片,添加 data-original 屬性扑毡,讓其指向真正的圖像地址胃榕。
例如:<img data-original=“img/example.jpg” src=“img/grey.gif”>
  這樣我們就需要先分析一下插件的優(yōu)缺點(diǎn),再?zèng)Q定是否要使用僚楞。
使用:
必須按照這種結(jié)構(gòu)才有實(shí)際作用勤晚,需要對(duì)輸出進(jìn)行定義。
可以節(jié)約服務(wù)器資源泉褐,并且有較好的用戶體驗(yàn)赐写。
如果圖片很大,當(dāng)用戶滾動(dòng)到目標(biāo)位置膜赃,需要較長(zhǎng)時(shí)間下載挺邀。

不使用:
增加服務(wù)器壓力,浪費(fèi)系統(tǒng)資源跳座。

究竟使用不使用端铛,還是要看你自己的實(shí)際需求。如果你圖片比較少疲眷,就不必使用了禾蚕,如果你圖片比較多,可以考慮一下狂丝。但是换淆,使用的話哗总,你可能需要把每一 個(gè)img 標(biāo)簽上自己加上這個(gè)屬性,會(huì)稍微麻煩一點(diǎn)倍试。潛行者m博客上讯屈,就用了這個(gè)插件,不過(guò)沒(méi)用使用官方說(shuō)的那種結(jié)構(gòu)县习,要的只是一個(gè)緩沖加載的效果涮母。

開(kāi)始使用 lazyload.js

第一步:加載相關(guān)文件。
很明顯躁愿,你要加載jquery和這個(gè)插件叛本。你可以使用以下代碼,加載這幾個(gè)文件:

<script src="jquery.js" type="text/javascript"></script>
<script src="jquery.lazyload.js"  type="text/javascript"></script>

第二步:定義圖片結(jié)構(gòu)攘已。
按照官方的建議炮赦,定義你的img結(jié)構(gòu):

![](img/grey.gif)

第三步:觸發(fā)這個(gè)插件,生效样勃。
激活以下吠勘,你就可以在目標(biāo)中使用了。

$("img.lazy").lazyload();
lazyload.js 高級(jí)使用方法:

下面部分來(lái)自官方文檔峡眶,將官方文檔進(jìn)行了一下簡(jiǎn)單的翻譯剧防。更周全的做法
  我們不得不思考這樣一個(gè)問(wèn)題。我們定義了這樣一個(gè)結(jié)構(gòu)辫樱,那么網(wǎng)頁(yè)中峭拘,就不會(huì)加載源圖像了。只有當(dāng) Javascript 執(zhí)行狮暑,才會(huì)顯示這個(gè)源圖像鸡挠。如果用戶的瀏覽器不支持或者用戶關(guān)掉了支持 Javascript 的選項(xiàng),那么我們的這個(gè)圖像就無(wú)法顯示出來(lái)搬男。也就是說(shuō)拣展,如果沒(méi)有 Javascript 的支持,我們的圖像就無(wú)法顯示出來(lái)缔逛。
  應(yīng)對(duì)這個(gè)問(wèn)題备埃,我們需要引入 noscript 標(biāo)簽。大體思路如下:用 noscript 包含真實(shí)的圖像位置褐奴,當(dāng)瀏覽器不支持 Javascript按脚,直接顯示圖像。對(duì)現(xiàn)有圖像敦冬,隱藏處理辅搬,使用 show() 方法觸發(fā)顯示。這樣脖旱,如果瀏覽器不支持 Javascript伞辛,我們自定義的 img 就不會(huì)出現(xiàn)烂翰,而顯示 noscript 里面的圖像。具體實(shí)現(xiàn)代碼如下:

![](img/grey.gif)
<noscript><imgsrc="img/example.jpg"  width="640"  heigh="480"></noscript>
<script  type="text/javascript">
      $("img.lazy").show().lazyload();
</script>

提前加載
  默認(rèn)的情況是蚤氏,當(dāng)你滾動(dòng)到圖片位置的時(shí)候,插件開(kāi)始加載踊兜。這樣竿滨,用戶可能首先看到的是一個(gè)空白圖像,然后再緩慢出現(xiàn)捏境。如果你想在用戶滾動(dòng)之前于游,提前加載這個(gè)圖像,你可以配置一下參數(shù)垫言。

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

threshold 這個(gè)參數(shù)贰剥,就是用來(lái)提前加載的。上面這個(gè)語(yǔ)句的意思是筷频,當(dāng)距離圖片還有200像素的時(shí)候蚌成,就開(kāi)始加載圖片。

自定義觸發(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)效果,就是沒(méi)有效果蚜点,下載完成之后轧房,直接顯示出來(lái)。這樣的用戶體驗(yàn)并不好禽额,你可以設(shè)置 effect 屬性锯厢,來(lái)控制顯示圖片的效果。例如

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

fadeIn的效果就是脯倒,改變圖片的透明度实辑,漸現(xiàn)的方式出現(xiàn)。效果:
effect demo page

把圖像插入某個(gè)容器
  大家如果使用智能手機(jī)的話藻丢,經(jīng)常去應(yīng)用網(wǎng)站下載應(yīng)用剪撬,他們通常使用一個(gè)橫著的容器,放一些手機(jī)截圖悠反。使用 container 屬性残黑,能很輕松在容器中實(shí)現(xiàn)緩沖加載馍佑。首先,我們需要用css定義這個(gè)容器梨水,然后用這個(gè)插件進(jìn)行加載拭荤。效果: vertical

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

加載不可見(jiàn)圖像
  有部分圖像是不可見(jiàn)的,我們對(duì)其加上類似 display:none 等屬性的圖像疫诽。默認(rèn)的情況下舅世,這個(gè)插件是不會(huì)加載隱藏的不可見(jiàn)圖像。如果我們需要用它加載不可見(jiàn)圖像奇徒,我們需要將 skip_invisible 設(shè)置為 false

$("img.lazy").lazyload({ skip_invisible :false});
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末雏亚,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子摩钙,更是在濱河造成了極大的恐慌罢低,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件胖笛,死亡現(xiàn)場(chǎng)離奇詭異网持,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)匀钧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門翎碑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人之斯,你說(shuō)我怎么就攤上這事日杈。” “怎么了佑刷?”我有些...
    開(kāi)封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵莉擒,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我瘫絮,道長(zhǎng)涨冀,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任麦萤,我火速辦了婚禮鹿鳖,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘壮莹。我一直安慰自己翅帜,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布命满。 她就那樣靜靜地躺著涝滴,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上歼疮,一...
    開(kāi)封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天杂抽,我揣著相機(jī)與錄音,去河邊找鬼韩脏。 笑死缩麸,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的骤素。 我是一名探鬼主播匙睹,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼济竹,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了霎槐?” 一聲冷哼從身側(cè)響起送浊,我...
    開(kāi)封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤丘跌,失蹤者是張志新(化名)和其女友劉穎袭景,沒(méi)想到半個(gè)月后闭树,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體报辱,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡幅疼,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了昼接。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片慢睡。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡逐工,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出漂辐,到底是詐尸還是另有隱情泪喊,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布者吁,位于F島的核電站窘俺,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜瘤泪,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一灶泵、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧对途,春花似錦赦邻、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至膳犹,卻和暖如春恬吕,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背须床。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工铐料, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人豺旬。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓钠惩,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親族阅。 傳聞我的和親對(duì)象是個(gè)殘疾皇子篓跛,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

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