1. 程式人生 > >懶載入實現

懶載入實現

懶載入:(1)圖片進入可視區域之後請求資源,對於電商,頁面很長的場景,減少無效的資源載入(單頁應用,觀看的時候才去載入),(2)併發載入的資源過多會影響網站的正常使用。

具體實現懶載入:圖片的src的地址被改變的時候被載入。監聽滑動的事件,當圖片進入可視區域的時候才去載入。

  window.onload = function (ev) {

         let viewheight = document.documentElement.clientWidth;
         function  lazyload() {
             //實現懶載入
          let allNode = document.querySelectorAll("img[lazyload][data-origin]");

          //進行遍歷
             Array.from(allNode).forEach((item,index)=>{
                   let react;
                   console.log(item.dataset)
                   if(item.dataset.origin === "")
                   {
                       return ;
                   }
                  react = item.getBoundingClientRect();
                  if(react.bottom >=0 && react.top<viewheight){
                      //到達可視區域
                      //給圖片提供地址
                      let img = new Image();
                      img.src  = item.dataset.origin;
                      img.onload = ()=>{
                         item.src = img.src;
                      }
                      item.removeAttribute("data-origin");
                      item.removeAttribute("lazyload");
                  }

             })


         }
         lazyload();//上來先呼叫一下
         //繫結事件
         document.addEventListener("scroll",lazyload);
     }