IntersectionObserver實現(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>
運行代碼后發(fā)現(xiàn),當(dāng)滾動滾動軸時,只有當(dāng)<li>區(qū)域完全顯示出來后才會觸發(fā)相應(yīng)的下載圖片的http請求。
兼容瀏覽器:
desktop:

Mobile:

以上這篇IntersectionObserver實現(xiàn)圖片懶加載的示例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
js自動閉合html標(biāo)簽(自動補全html標(biāo)記)
假如我有一個DIV,如果沒有閉合后面的樣式都會亂了,這樣的代碼可能會影響后面的樣式,我希望用JS去自動閉合這種沒有閉合的標(biāo)簽2012-10-10
js實現(xiàn)鼠標(biāo)滑過文字鏈接色彩變化的效果
這篇文章主要介紹了js實現(xiàn)鼠標(biāo)滑過文字鏈接色彩變化的效果,涉及javascript鼠標(biāo)事件及樣式操作的技巧,非常具有實用價值,需要的朋友可以參考下2015-05-05
ECMA5數(shù)組的新增方法有哪些及forEach()模仿實現(xiàn)
這篇文章主要介紹了ECMA5數(shù)組的新增方法有哪些及forEach()模仿實現(xiàn),需要的朋友可以參考下2015-11-11

