<em id="09ttv"></em>
    <sup id="09ttv"><pre id="09ttv"></pre></sup>
    <dd id="09ttv"></dd>

        • 懶加載封裝實現

          2018-5-24    周周

          1.什么是懶加載?
                   當訪問一個頁面的時候,先把img元素背景圖片路徑替換成一張替代圖片的路徑(這樣就只需請求一次,占位圖),將圖片的真實路徑存儲在img自定義屬性中,只有當圖片出現在瀏覽器的可視區域內時,才設置圖片正真的路徑,讓圖片顯示出來。這就是圖片懶加載。
          2.為什么要用懶加載?
                 很多頁面,內容很豐富,頁面很長,圖片較多。比如說各種商城頁面。這些頁面圖片數量多,而且比較大,少說百來K,多則上兆。要是頁面載入就一次性加載完畢,提高首屏加載速度,可以減輕服務器壓力,節約流量,用戶體驗好。
          3.懶加載實現封裝?

              lazyLoad由四個函數組成,init(初始化函數),checkShow(判斷圖片是否加載),shouldShow(將要展示的圖片),showImg(展示圖片)。

          (1)初始化函數(init)  由于滾動事件太消耗性能,所以用定時器替換,不是滾動就觸發,而是滾動后200毫秒后觸發。

                          var timer;
                          function init(){
                              $(window).on("scroll",function(){
                                  if(timer){
                                      clearTimeout(timer);
                                  }
                                  timer = setTimeout(function(){
                                      checkShow();  //
                                  },200);
                              });
                          }

          (2)判斷”圖片是否加載“(checkshow)函數,如果圖片有isload屬性,就說明圖片已經加載過了,直接return。如果圖片沒有isload屬性,進入將要展示圖片shouldshow函數

                          function checkShow(){
                              $lazyLoad.each(function(){
                                  $cur = $(this);
                                  if($cur.attr('isLoaded')){
                                      return;
                                  }
                                  if(shouldShow($cur)){
                                      showImg($cur);
                                  }
                              });
                          }

          (3)將要展示圖片shouldshow函數,獲取屏幕可視寬度,滾動高度,要展示的元素到文檔的高度,如果元素到文檔的高度小于屏幕的可視高度加上滾動高度,說明元素已在可視區內,返回true,否則返回false。

                         function shouldShow ($node){
                              var scrollH = $(window).scrollTop(),
                                  windowH = $(window).height(),
                                  top = $node.offset().top;
                              if(top < windowH + scrollH){
                                  return true;
                              } else {
                                  return false;
                              }

                          }

          (4)“展示圖片”函數,將元素的src屬性替換為自定義屬性data-src(真正圖片的地址)。

                          function showImg ($node){
                              $node.find("img").attr("src",$node.data("src"));
                              $node.attr("isLoaded",true);
                          }

          (5)函數返回一個對象

                        return {
                                  init : init
                     }

                這樣就實現懶加載封裝了!

          日歷

          鏈接

          個人資料

          藍藍設計的小編 http://m.sdgs6788.com

          存檔

          国产一区二区三区久久精品| 欧美伊人久久大香线蕉综合69| 99久久香蕉国产线看观香| 久久这里都是精品| 亚洲精品无码久久久久| 国产成人AV综合久久| 久久免费看黄a级毛片| 久久国产精品久久精品国产| 精品久久久久久国产牛牛app| 久久精品国产2020| 国产精品日韩深夜福利久久| 亚洲精品无码久久久久久| 久久99精品久久久久久9蜜桃| 久久人人爽人人爽人人片AV高清| 国产一级持黄大片99久久| 久久人人爽人人人人片av| 国产高潮国产高潮久久久91 | 亚洲精品乱码久久久久66| 国产精品久久久久影院色| 一本色道久久99一综合| 午夜精品久久久久成人| 久久噜噜电影你懂的| 欧美牲交A欧牲交aⅴ久久| 一本色道久久综合狠狠躁篇| 久久av免费天堂小草播放| 99久久99久久精品免费看蜜桃| 久久久国产精华液| 久久天天躁夜夜躁狠狠| 伊人热热久久原色播放www| 久久精品国产99久久丝袜| 日韩一区二区久久久久久| 久久精品国产亚洲av高清漫画| 久久精品国产久精国产一老狼| 一级A毛片免费观看久久精品| 欧美激情精品久久久久久久| 欧美亚洲另类久久综合| 人妻精品久久无码区| 久久99精品国产自在现线小黄鸭 | 99久久精品国产免看国产一区| 婷婷伊人久久大香线蕉AV| 亚洲AV日韩AV天堂久久|