圖片懶加載

什么是懶加載

懶加載的主要目的是作為服務(wù)器前端的優(yōu)化,減少請(qǐng)求數(shù)或延遲請(qǐng)求數(shù),?懶加載也叫延遲加載,延遲加載圖片或符合某些條件時(shí)才加載某些圖片。

懶加載的原理

只有img標(biāo)簽中的src寫入了圖片的地址,加載頁(yè)面時(shí)才會(huì)請(qǐng)求圖片,所以使用懶加載時(shí)在src中并不寫入任何地址,把圖片的真實(shí)地址放到data- (標(biāo)簽內(nèi)部屬性可存數(shù)據(jù))屬性中,在js中綁定鼠標(biāo)滾動(dòng)事件,其回調(diào)中遍歷所有圖片并作出判斷,將出現(xiàn)在視口中的圖片的 'data-' 屬性保存的地址放到 'src' 中即可。

HTML

<h1>js懶加載</h1>?

?<div class="box">

<img src="" onerror="this.src='./img/loading.jpg'" class="img" lazyload="true" data-original="./img/1.jpg">

?<img src="" onerror="this.src='./img/loading.jpg'" class="img" lazyload="true" data-original="./img/2.jpg">

?<img src="" onerror="this.src='./img/loading.jpg'" class="img" lazyload="true" data-original="./img/3.jpg">?

?<img src="" onerror="this.src='./img/loading.jpg'" class="img" lazyload="true" data-original="./img/4.jpg">

?<img src="" onerror="this.src='./img/loading.jpg'" class="img" lazyload="true" data-original="./img/5.jpg">?

?<img src="" onerror="this.src='./img/loading.jpg'" class="img" lazyload="true" data-original="./img/6.jpg">

<img src="" onerror="this.src='./img/loading.jpg'" class="img" lazyload="true" data-original="./img/7.jpg">?

?</div>

引入一堆圖片src為空,地址寫在data-original中,onerror表示當(dāng)未加載圖片時(shí)顯示的臨時(shí)加載頁(yè)圖片JavaScript

Script

window.onload = function () { //獲取當(dāng)前瀏覽器的視口高度?

?var viewHeight = document.documentElement.clientHeight; //鼠標(biāo)滾動(dòng)回調(diào)?

?function lazyload() {?

?var img = document.getElementsByClassName('img'); //獲取所有圖片集合 //遍歷圖片集合?

?for (let item of img) { //獲取圖片距視口頂部的距離?

?var imgHeight = item.getBoundingClientRect(); //判斷當(dāng)圖片出現(xiàn)在視口160px時(shí)把地址放到src中,顯示出圖片?

?if (imgHeight.top < (viewHeight - 160)) {?

?item.src = item.getAttribute("data-original")?

? ? ? ? ? ? ?}?

? ? ? ?}?

?}?

?lazyload(); //頁(yè)面加載時(shí)把當(dāng)前視口中的圖片加載進(jìn)來(lái)?

?document.addEventListener('scroll', lazyload);}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 懶加載的原理: 圖片預(yù)加載:就是在網(wǎng)頁(yè)全部加載之前,提前加載圖片,當(dāng)用戶需要查看時(shí)可直接從本地緩存中渲染,以提供給...
    朝樹閱讀 4,007評(píng)論 0 24
  • 我們?cè)谧鲰?xiàng)目的時(shí)候,經(jīng)常會(huì)遇到這樣一個(gè)需求:通過(guò)查詢條件查出一個(gè)列表,每個(gè)列表項(xiàng)的左邊是一個(gè)圖片,右邊是該項(xiàng)對(duì)應(yīng)的...
    Waitingforyu閱讀 584評(píng)論 0 6
  • 懶加載 什么是懶加載 懶加載其實(shí)就是延遲加載,是一種對(duì)網(wǎng)頁(yè)性能優(yōu)化的方式,比如當(dāng)訪問(wèn)一個(gè)頁(yè)面的時(shí)候,優(yōu)先顯示可視區(qū)...
    grain先森閱讀 2,670評(píng)論 0 79
  • 首先是在img結(jié)構(gòu)中加入“data-xxx”如下: JavaScript部分: var num = d...
    醉死方休丶閱讀 270評(píng)論 0 0
  • 原理 一開始將img標(biāo)簽的src設(shè)置為一張默認(rèn)圖片,將真實(shí)的圖片地址放在data-src上,監(jiān)聽滾動(dòng)事件,當(dāng)圖片進(jìn)...
    cab240f6e992閱讀 622評(píng)論 0 0

友情鏈接更多精彩內(nèi)容