IntersectionObserver實(shí)現(xiàn)圖片懶加載的示例
API:
https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API
直接上源碼:
<!DOCTYPE html> <html> <header> <style> .list-item{ height: 400px; margin: 5px; background-color: lightblue; list-style: none; } </style> </header> <body> <li class="list-item"><img class="list-item-img" alt="loading" data-src='./images/icon1.png'></li> <li class="list-item"><img class="list-item-img" alt="loading" data-src='./images/icon2.png'></li> <li class="list-item"><img class="list-item-img" alt="loading" data-src='./images/icon3.png'></li> <li class="list-item"><img class="list-item-img" alt="loading" data-src='./images/icon4.png'></li> <li class="list-item"><img class="list-item-img" alt="loading" data-src='./images/icon5.png'></li> <li class="list-item"><img class="list-item-img" alt="loading" data-src='./images/icon6.png'></li> <script> var observer = new IntersectionObserver(function(changes) { console.log(changes); changes.forEach(function(element, index) { // statements if (element.intersectionRatio > 0 && element.intersectionRatio <= 1) { element.target.src = element.target.dataset.src; } }); }); function addObserver() { var listItems = document.querySelectorAll('.list-item-img'); listItems.forEach(function(item) { observer.observe(item); }); } addObserver(); </script> </body> </html>
運(yùn)行代碼后發(fā)現(xiàn),當(dāng)滾動(dòng)滾動(dòng)軸時(shí),只有當(dāng)<li>區(qū)域完全顯示出來(lái)后才會(huì)觸發(fā)相應(yīng)的下載圖片的http請(qǐng)求。
兼容瀏覽器:
desktop:
Mobile:
以上這篇IntersectionObserver實(shí)現(xiàn)圖片懶加載的示例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
vue渲染大量數(shù)據(jù)時(shí)卡頓卡死解決方法
這篇文章主要介紹了vue渲染大量數(shù)據(jù)時(shí)發(fā)生卡頓卡死問(wèn)題時(shí)的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08在網(wǎng)頁(yè)里看flash的trace數(shù)據(jù)的js類(lèi)
我的js類(lèi)jdhcn.js中的一個(gè)flashDebug方法2009-01-01一文教會(huì)你從零開(kāi)始畫(huà)echarts地圖
ECharts是一個(gè)使用JavaScript實(shí)現(xiàn)的開(kāi)源可視化庫(kù),涵蓋各行業(yè)圖表,滿(mǎn)足各種需求,下面這篇文章主要給大家介紹了如何從零開(kāi)始畫(huà)echarts地圖的相關(guān)資料,需要的朋友可以參考下2022-04-04js實(shí)現(xiàn)精美的圖片跟隨鼠標(biāo)效果實(shí)例
這篇文章主要介紹了js實(shí)現(xiàn)精美的圖片跟隨鼠標(biāo)效果,實(shí)例分析了javascript鼠標(biāo)事件及頁(yè)面樣式的操作技巧,需要的朋友可以參考下2015-05-05JavaScript中的call和apply的用途以及區(qū)別
本文主要介紹了JavaScript中的call和apply的用途以及區(qū)別。具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧2017-01-01ie下動(dòng)態(tài)加態(tài)js文件的方法
接觸過(guò)相關(guān)知識(shí)的都知道,動(dòng)態(tài)向DOM中添加js的script標(biāo)簽時(shí),在各種瀏覽器下會(huì)有不同的表現(xiàn)。2011-09-09JScript內(nèi)置對(duì)象Array中元素的刪除方法
JScript內(nèi)置對(duì)象Array中元素的刪除方法...2007-03-03javascript頁(yè)面渲染速度測(cè)試腳本分享
這篇文章主要介紹了javascript頁(yè)面渲染速度測(cè)試腳本,計(jì)算瀏覽器渲染HTML頁(yè)面所需要的時(shí)間,需要的朋友可以參考下2014-04-04