懶加載:(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); }