圖片懶加載

1.原理

當(dāng)頁(yè)面圖片比較多的時(shí)候,加載速度會(huì)比較慢,所以為了增加頁(yè)面加載速度,先將可視區(qū)域內(nèi)的圖片加載,其他區(qū)域的圖片暫不加載,等到滾動(dòng)到可視區(qū)域內(nèi),再去加載圖片,會(huì)緩解一部分服務(wù)器的壓力,提升性能.

2.實(shí)現(xiàn)步驟

  • 將頁(yè)面中的img標(biāo)簽的src指向占位圖片(小圖片),然后自定義data-src屬性,指向真實(shí)引入的圖片.
    <img src="placeholder.png" data-src="https://img01.jhcms.com/wmdemo/photo/201707/20170727_CC1C74F71145C7D4FBEA447FE89DDD7C.jpg">
    
  • 先將可視區(qū)域內(nèi)的圖片的src替換成data-src內(nèi)的值
        var img= document.getElementsByTagName('img'),
              len = img.length,
              n = 0;
        function lazypic(){
            var visibleHeight = document.documentElement.clientHeight,
                  scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
            for(let i = n;i<len;i++){
                if(img[i].offsetTop < visibleHeight + scrollTop){
                    if(img[i].getAttribute('src') == 'placeholder.png'){
                        img[i].src = img[i].getAttribute('data-src')
                    }
                    n =  i + 1
                }
            }
        }
    
  • 然后監(jiān)聽(tīng)滾動(dòng)事件,把即將出現(xiàn)在可視區(qū)域內(nèi)的圖片加載出來(lái).
        window.onscroll = lazypic;
    

3.代碼

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script src="https://cdn.bootcss.com/jquery/2.2.4/jquery.min.js"></script>
    <style>
          img {
              display: block;
              margin-bottom: 50px;
          }
    </style>
    </head>
    <body>
      <img src="placeholder.png" data-src="https://img01.jhcms.com/wmdemo/photo/201707/20170727_CC1C74F71145C7D4FBEA447FE89DDD7C.jpg">
      <img src="placeholder.png" data-src="https://img01.jhcms.com/demo/photo/201801/20180129_CA90F1C619019CE324AAE33479EEBA58.png" alt="">
      <img src="placeholder.png" data-src="https://img01.jhcms.com/demo/photo/201711/20171103_B328846ADC0A115B3C450F4C76160572.png" alt="">
      <img src="placeholder.png" data-src="https://img01.jhcms.com/wmdemo/photo/201707/20170727_CC1C74F71145C7D4FBEA447FE89DDD7C.jpg">
      <img src="placeholder.png" data-src="https://img01.jhcms.com/demo/photo/201801/20180129_CA90F1C619019CE324AAE33479EEBA58.png" alt="">
      <img src="placeholder.png" data-src="https://img01.jhcms.com/demo/photo/201711/20171103_B328846ADC0A115B3C450F4C76160572.png" alt="">
      <img src="placeholder.png" data-src="https://img01.jhcms.com/wmdemo/photo/201707/20170727_CC1C74F71145C7D4FBEA447FE89DDD7C.jpg">
      <img src="placeholder.png" data-src="https://img01.jhcms.com/demo/photo/201801/20180129_CA90F1C619019CE324AAE33479EEBA58.png" alt="">
      <img src="placeholder.png" data-src="https://img01.jhcms.com/demo/photo/201711/20171103_B328846ADC0A115B3C450F4C76160572.png" alt="">
      <img src="placeholder.png" data-src="https://img01.jhcms.com/wmdemo/photo/201707/20170727_CC1C74F71145C7D4FBEA447FE89DDD7C.jpg">
      <img src="placeholder.png" data-src="https://img01.jhcms.com/demo/photo/201801/20180129_CA90F1C619019CE324AAE33479EEBA58.png" alt="">
      <img src="placeholder.png" data-src="https://img01.jhcms.com/demo/photo/201711/20171103_B328846ADC0A115B3C450F4C76160572.png" alt=""> 
  </body>
  <script>
     var img= document.getElementsByTagName('img'),
          len = img.length,
          n = 0;
     lazypic();
     window.onscroll = lazypic;
     function lazypic(){
        var visibleHeight = document.documentElement.clientHeight,
              scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
        for(let i = n;i<len;i++){
            if(img[i].offsetTop < visibleHeight + scrollTop){
                if(img[i].getAttribute('src') == 'placeholder.png'){
                    img[i].src = img[i].getAttribute('data-src')
                }
                n =  i + 1
            }
        }
    }
  </script>
  </html>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容