首頁  >  文章  >  web前端  >  Intersection Observer圖片懶載入實作方法

Intersection Observer圖片懶載入實作方法

小云云
小云云原創
2018-01-31 13:17:291258瀏覽

本文主要為大家帶來一篇IntersectionObserver實作圖懶載入的範例。小編覺得蠻不錯的,現在就分享給大家,也給大家做個參考。一起跟著小編過來看看吧,希望能幫助大家。

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" 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>

在執行程式碼後發現,當捲動滾動軸時,只有當25edfb22a4f469ecb59f1190150159c6區域完全顯示出來後才會觸發對應的下載圖片的http請求。

相容瀏覽器:

desktop:

#Mobile:

##相關推薦:


vue中使用圖片懶載入vue-lazyload外掛程式

圖片懶載入

JS實作圖片懶載入教學######

以上是Intersection Observer圖片懶載入實作方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn