懶加載也叫延遲加載,指的是在長網頁中延遲加載圖像,是一種很好優化網頁性能的方式。用戶滾動到它們以前,可視區域外的圖像不會加載。這與圖像預加載相反,在長網頁上使用延遲加載將使網頁加載更快。在某些狀況下,它還能夠幫助減小服務器負載。常適用圖片不少,頁面很長的電商網站場景中。javascript
首先將頁面上的圖片的 src 屬性設爲空字符串,而圖片的真實路徑則設置在data-original屬性中, 當頁面滾動的時候須要去監聽scroll事件,在scroll事件的回調中,判斷咱們的懶加載的圖片是否進入可視區域,若是圖片在可視區內將圖片的 src 屬性設置爲data-original 的值,這樣就能夠實現延遲加載。css
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Lazyload</title>
<style> .image-item { display: block; margin-bottom: 50px; height: 200px;//必定記得設置圖片高度 } </style>
</head>
<body>
<img src="" class="image-item" lazyload="true" data-original="images/1.png"/>
<img src="" class="image-item" lazyload="true" data-original="images/2.png"/>
<img src="" class="image-item" lazyload="true" data-original="images/3.png"/>
<img src="" class="image-item" lazyload="true" data-original="images/4.png"/>
<img src="" class="image-item" lazyload="true" data-original="images/5.png"/>
<img src="" class="image-item" lazyload="true" data-original="images/6.png"/>
<img src="" class="image-item" lazyload="true" data-original="images/7.png"/>
<img src="" class="image-item" lazyload="true" data-original="images/8.png"/>
<img src="" class="image-item" lazyload="true" data-original="images/9.png"/>
<img src="" class="image-item" lazyload="true" data-original="images/10.png"/>
<img src="" class="image-item" lazyload="true" data-original="images/11.png"/>
<img src="" class="image-item" lazyload="true" data-original="images/12.png"/>
<script> var viewHeight =document.documentElement.clientHeight//獲取可視區高度 function lazyload(){ var eles=document.querySelectorAll('img[data-original][lazyload]') Array.prototype.forEach.call(eles,function(item,index){ var rect if(item.dataset.original==="") return rect=item.getBoundingClientRect()// 用於得到頁面中某個元素的左,上,右和下分別相對瀏覽器視窗的位置 if(rect.bottom>=0 && rect.top < viewHeight){ !function(){ var img=new Image() img.src=item.dataset.url img.onload=function(){ item.src=img.src } item.removeAttribute("data-original")//移除屬性,下次再也不遍歷 item.removeAttribute("lazyload") }() } }) } lazyload()//剛開始還沒滾動屏幕時,要先觸發一次函數,初始化首頁的頁面圖片 document.addEventListener("scroll",lazyload) </script>
</body>
</html>
詳解懶加載和預加載(js)html
懶加載和預加載java