按需要加載圖片,這是一個非常實用的功能,不僅可以提高網(wǎng)站的性能,還可以為你節(jié)省流量。對于用虛擬主機(jī)的朋友來說,如果你的網(wǎng)站是一個圖片網(wǎng)站或者圖片比較多的網(wǎng)站,那么圖片懶加載功能真不能少。
實現(xiàn)圖片懶加載的原理也非常地簡單,默認(rèn)情況下不給圖片 scr 屬性賦值。當(dāng)滿足一定的條件時才把圖片地址取出來賦值給 src 屬性。一般地,這上為了讓網(wǎng)站頁面有更好的用戶體驗,我們都會預(yù)先給所有的圖片都設(shè)置一張默認(rèn)的圖片,比如一個像素的圖片或者其它任意一張圖片(只要你喜歡)。
我們還是先來看看這個 Demo:http://yunkus.com/demo/load-images-on-demand/
例子中用了一個談入的效果(CSS 3),如果你想用更多的效果,你可以下載一下 animate.css 庫,嘗試不同效果展示。在這里就不作過多的講解,至于 animate.css 庫的用法你可以參考這里:
Animate.css 使用教程(一個強(qiáng)大的 CSS3 動畫庫)。
不管滾動條處于什么位置,只要你一刷新,就只會加載處于屏幕里的圖片。除此之處不管是屏幕上方的圖片,還是屏幕下方的圖片只要還沒進(jìn)入屏幕區(qū)的都不會被加載。這樣的處理方式理論上是比較優(yōu)的,但是在實踐的應(yīng)用中,卻不一定能發(fā)展出原有的作用。試想一下,不管你是通過地址直接訪問,還是通過搜索引擎進(jìn)入一個頁面,一般情況下都會從頁面的頂部內(nèi)容開始顯示,如果你有潔癖想讓代碼更簡單,那么 loadImg() 方法就可以更改成如下代碼:
其實也沒什么變的,只是 if 判斷條件少了一個:
不過也有例外,比如:從列表頁中點了評論時,極有可能是跳到詳情頁后直接跳到評論區(qū),這種情況也很常見,此時就不需要更改代碼以達(dá)到最優(yōu)。
這里還有個小問題,關(guān)于滾動監(jiān)聽事件的,像上面那樣寫 window.onscroll = function(){} 一個頁面只能用一個,如果有其它地主也用到這個滾動監(jiān)聽事件的話,那么就會只有一個起作用。在這里可以用事件綁定來解決,具體的方法可以查閱這里:常用的 JavaScript 函數(shù)封裝。
轉(zhuǎn)自:http://yunkus.com/load-images-on-demand/