Maison > Article > interface Web > Comment utiliser IntersectionObserver pour implémenter le chargement paresseux des images
API :
https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API
Aller directement à le code source :
<!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" src='./images/icon1.png'></li> <li class="list-item"><img class="list-item-img" alt="loading" src='./images/icon2.png'></li> <li class="list-item"><img class="list-item-img" alt="loading" src='./images/icon3.png'></li> <li class="list-item"><img class="list-item-img" alt="loading" src='./images/icon4.png'></li> <li class="list-item"><img class="list-item-img" alt="loading" src='./images/icon5.png'></li> <li class="list-item"><img class="list-item-img" alt="loading" 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>
Après avoir exécuté le code, j'ai découvert que lorsque l'axe de défilement défile, il ne se déclenchera que lorsque le La zone 25edfb22a4f469ecb59f1190150159c6 est entièrement affichée. Requête http correspondante pour télécharger l'image.
Navigateurs compatibles :
ordinateur de bureau :
Mobile :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!