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

        • 懶加載封裝實(shí)現(xiàn)

          2018-5-24    周周

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

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

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

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

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

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

          (3)將要展示圖片shouldshow函數(shù),獲取屏幕可視寬度,滾動(dòng)高度,要展示的元素到文檔的高度,如果元素到文檔的高度小于屏幕的可視高度加上滾動(dòng)高度,說明元素已在可視區(qū)內(nèi),返回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)“展示圖片”函數(shù),將元素的src屬性替換為自定義屬性data-src(真正圖片的地址)。

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

          (5)函數(shù)返回一個(gè)對(duì)象

                        return {
                                  init : init
                     }

                這樣就實(shí)現(xiàn)懶加載封裝了!

          日歷

          鏈接

          個(gè)人資料

          存檔

          国内精品九九久久精品| 色婷婷久久综合中文久久蜜桃av| 国内精品九九久久精品| 久久精品国产精品亚洲精品| 久久福利青草精品资源站| 久久成人永久免费播放| 日韩人妻无码一区二区三区久久99 | 久久久久亚洲av无码专区| 国产精品久久永久免费| 亚洲性久久久影院| 国产亚洲欧美成人久久片 | 超级碰碰碰碰97久久久久| 亚洲国产精品成人久久| 国产欧美久久久精品影院| 久久精品天天中文字幕人妻| 久久综合色区| 91久久精品电影| 亚洲精品蜜桃久久久久久| 国产精品久久久久天天影视| 偷偷做久久久久网站| 久久国产精品免费一区二区三区| 亚洲精品国产美女久久久| 国产精品无码久久综合网| 亚洲国产天堂久久综合网站| 久久91精品国产91久| 国产A级毛片久久久精品毛片| 欧美熟妇另类久久久久久不卡 | 青青久久精品国产免费看| 香蕉aa三级久久毛片| 狠狠色丁香婷婷综合久久来| 久久综合国产乱子伦精品免费| 久久久WWW免费人成精品| 久久国产免费| 久久久久国产一区二区| 国产精品久久午夜夜伦鲁鲁| 国产一区二区三区久久精品| 久久精品国产亚洲av高清漫画| 久久久久久精品无码人妻| 精品久久久无码21p发布| 婷婷久久久亚洲欧洲日产国码AV| 日韩人妻无码精品久久免费一|