js前端如何實現(xiàn)圖片懶加載-創(chuàng)新互聯(lián)

這篇文章主要介紹js前端如何實現(xiàn)圖片懶加載,文中介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們一定要看完!

創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站建設(shè)、做網(wǎng)站、磴口網(wǎng)絡(luò)推廣、成都小程序開發(fā)、磴口網(wǎng)絡(luò)營銷、磴口企業(yè)策劃、磴口品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們大的嘉獎;創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供磴口建站搭建服務(wù),24小時服務(wù)熱線:13518219792,官方網(wǎng)址:muchs.cn

思路:

將頁面里所有img屬性src屬性用data-xx代替,當(dāng)頁面滾動直至此圖片出現(xiàn)在可視區(qū)域時,用js取到該圖片的data-xx的值賦給src。

關(guān)于各種寬高:

  1. 頁可見區(qū)域?qū)挘?document.body.clientWidth;

  2. 網(wǎng)頁可見區(qū)域高: document.body.clientHeight;

  3. 網(wǎng)頁可見區(qū)域?qū)挘?document.body.offsetWidth (包括邊線的寬);

  4. 網(wǎng)頁可見區(qū)域高: document.body.offsetHeight (包括邊線的寬);

  5. 網(wǎng)頁正文全文寬: document.body.scrollWidth;

  6. 網(wǎng)頁正文全文高: document.body.scrollHeight;

  7. 網(wǎng)頁被卷去的高: document.body.scrollTop;

  8. 網(wǎng)頁被卷去的左: document.body.scrollLeft;

  9. 網(wǎng)頁正文部分上: window.screenTop;

  10. 網(wǎng)頁正文部分左: window.screenLeft;

  11. 屏幕分辨率的高: window.screen.height;

  12. 屏幕分辨率的寬: window.screen.width;

  13. 屏幕可用工作區(qū)高度: window.screen.availHeight;

示例:

jqueryLazyload方式

下載地址:https://github.com/helijun/helijun/blob/master/plugin/lazyLoad/jquery.lazyload.js

<section class="module-section" id="container">
   <img class="lazy-load" data-original="../static/img/loveLetter/teacher/teacher1.jpg" width="640" height="480" alt="測試懶加載圖片"/>
</section>
require.config({
  baseUrl : "/static",
  paths: {
    jquery:'component/jquery/jquery-3.1.0.min'
    jqueryLazyload: 'component/lazyLoad/jquery.lazyload',//圖片懶加載
  },
  shim: {
    jqueryLazyload: {
      deps: ['jquery'],
      exports: '$'
    }
  }
});
require(
  [
    'jquery',
    'jqueryLazyload'
  ], 
  function($){
    $(document).ready(function() {   
      $("img.lazy-load").lazyload({ 
          effect : "fadeIn", //漸現(xiàn),show(直接顯示),fadeIn(淡入),slideDown(下拉)
          threshold : 180, //預(yù)加載,在圖片距離屏幕180px時提前載入
          event: 'click', // 事件觸發(fā)時才加載,click(點擊),mouseover(鼠標(biāo)劃過),sporty(運(yùn)動的),默認(rèn)為scroll(滑動)
          container: $("#container"), // 指定對某容器中的圖片實現(xiàn)效果
          failure_limit:2 //加載2張可見區(qū)域外的圖片,lazyload默認(rèn)在找到第一張不在可見區(qū)域里的圖片時則不再繼續(xù)加載,但當(dāng)HTML容器混亂的時候可能出現(xiàn)可見區(qū)域內(nèi)圖片并沒加載出來的情況
        }); 
      });
  });

為了代碼可讀性,屬性值我都寫好了注釋。值得注意的是預(yù)制圖片屬性為data-original,并且最好是給予初始高寬占位,以免影響布局,當(dāng)然這里為了演示我是寫死的640x480,如果是響應(yīng)式頁面,高寬需要動態(tài)計算。

echo.js方式

在前面“前端知識的一些總結(jié)”的博文中,介紹了一款非常簡單實用輕量級的圖片延時加載插件echo.js,如果你的項目中沒有依賴jquery,那么這將是個不錯的選擇,50行代碼,壓縮后才1k。當(dāng)然你完全可以集成到自己項目中去!

下載地址:https://github.com/helijun/helijun/tree/master/plugin/echo

<style>
  .demo img { 
    width: 736px; 
    height: 490px; 
    background: url(images/loading.gif) 50% no-repeat;}
</style>
<div class="demo">
  <img class="lazy" src="images/blank.gif" data-echo="images/big-1.jpg">
</div>
<script src="js/echo.min.js"></script>

<script>

Echo.init({
  offset: 0,//離可視區(qū)域多少像素的圖片可以被加載
   throttle: 0 //圖片延時多少毫秒加載
}); 

</script>

說明:blank.gif是一張背景圖片,包含在插件里了。圖片的寬高必須設(shè)定,當(dāng)然,可以使用外部樣式對多張圖片統(tǒng)一控制大小。data-echo指向的是真正的圖片地址。

以上是“js前端如何實現(xiàn)圖片懶加載”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司行業(yè)資訊頻道!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站muchs.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

當(dāng)前題目:js前端如何實現(xiàn)圖片懶加載-創(chuàng)新互聯(lián)
網(wǎng)址分享:http://muchs.cn/article46/dejchg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、網(wǎng)站策劃、網(wǎng)站排名、網(wǎng)頁設(shè)計公司、定制開發(fā)網(wǎng)站改版

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)