Home  >  Article  >  Web Front-end  >  Intersection Observer image lazy loading implementation method

Intersection Observer image lazy loading implementation method

小云云
小云云Original
2018-01-31 13:17:291260browse

This article mainly brings you an example of IntersectionObserver implementing lazy loading of images. The editor thinks it is quite good, so I will share it with you now and give it as a reference for everyone. Let’s follow the editor to take a look, I hope it can help everyone.

API:

https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API

Go directly to the source code:


<!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=&#39;./images/icon1.png&#39;></li>
    <li class="list-item"><img class="list-item-img" alt="loading" src=&#39;./images/icon2.png&#39;></li>
    <li class="list-item"><img class="list-item-img" alt="loading" src=&#39;./images/icon3.png&#39;></li>
    <li class="list-item"><img class="list-item-img" alt="loading" src=&#39;./images/icon4.png&#39;></li>
    <li class="list-item"><img class="list-item-img" alt="loading" src=&#39;./images/icon5.png&#39;></li>
    <li class="list-item"><img class="list-item-img" alt="loading" src=&#39;./images/icon6.png&#39;></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(&#39;.list-item-img&#39;);
        listItems.forEach(function(item) {
          observer.observe(item);
        });
      }

      addObserver();
    </script>
  </body>
</html>

After running the code, I found that when scrolling the scroll axis, only When the 25edfb22a4f469ecb59f1190150159c6 area is completely displayed, the corresponding http request to download the image will be triggered.

Compatible browsers:

desktop:

Mobile:

Related recommendations:

Use the vue-lazyload plug-in to lazily load images in vue

Lazy loading of images

JS implementation of image lazy loading tutorial

The above is the detailed content of Intersection Observer image lazy loading implementation method. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn