<strike id="cy2gs"><menu id="cy2gs"></menu></strike>
  • <del id="cy2gs"><dfn id="cy2gs"></dfn></del>
  • 懶加載封裝實現

    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://www.skdbbs.com

    存檔

    主站蜘蛛池模板: 99热精品久久只有精品| 亚洲第一永久AV网站久久精品男人的天堂AV| 久久久91精品国产一区二区三区| 久久久久人妻精品一区三寸蜜桃| 精品乱人伦一区二区三区| 无码国产精品一区二区免费vr | 久久久久久青草大香综合精品| 99re国产精品视频首页| 亚洲欧美精品SUV| 欧美精品一二区| 久久国产精品国语对白| 国产福利电影一区二区三区,亚洲国模精品一区 | 四虎成人精品在永久在线| 国产精品一级毛片无码视频 | 国产l精品国产亚洲区在线观看| 自拍偷自拍亚洲精品被多人伦好爽| 国产精品永久免费视频| 久久精品免费观看| 国产午夜精品视频| 99热门精品一区二区三区无码| 亚洲国产精品SSS在线观看AV| 欧美精品整片300页| 国产午夜精品久久久久九九| 中文字幕精品一区二区日本| 国产精品www| 国产精品一区二区久久精品| 国产探花在线精品一区二区| 精品一区二区三区在线观看视频| 亚洲国产另类久久久精品黑人| 热久久国产欧美一区二区精品| 久久精品18| 青青青青久久精品国产h久久精品五福影院1421 | 国内精品久久久久影院网站| 国产成人精品午夜福麻豆| 国产精品 一区 在线| 国产精品成人观看视频网站| 国产99久久久国产精品~~牛| 国产精品九九九| 久久九九久精品国产| 香蕉依依精品视频在线播放| 亚洲国产精品一区二区第一页免 |