懶加載

  1. 懶加載是網(wǎng)站解決性能問題最常見的方法
  2. 熟練 server-mock 工具的使用

題目1:如何判斷一個(gè)元素是否出現(xiàn)在窗口可視范圍(瀏覽器的上邊緣和下邊緣之間,肉眼可視)。寫一個(gè)函數(shù) isVisible實(shí)現(xiàn)

function isVisible($node){
    var scrollTop = $(window).scrollTop();  // 滑動(dòng)高度
    var windowHeight = $(window).height();  // 可視高度
    var elementHeight = $node.offset().top   // 元素位置高度
    if((elementHeight < scrollTop + windowHeight) && (elementHeight > scrollTop)){
        return true;
    }
    return false;
}

題目2:當(dāng)窗口滾動(dòng)時(shí),判斷一個(gè)元素是不是出現(xiàn)在窗口可視范圍。每次出現(xiàn)都在控制臺(tái)打印 true 。用代碼實(shí)現(xiàn)

$(window).on('scroll', function(){   // 綁定一個(gè)滑動(dòng)事件
    var $node = document.getElementById('node');   // 節(jié)點(diǎn)位置
    if(isVisible($node)){     // 每次出現(xiàn)都在控制臺(tái)打印true;
        console.log('true');
    } 
});

// 判斷是否出現(xiàn)在窗口可視范圍的函數(shù)
function isVisible($node){
    var scrollTop = $(window).scrollTop();  // 滑動(dòng)高度
    var windowHeight = $(window).height();  // 可視高度
    var elementHeight = $node.offset().top   // 元素位置高度
    if((elementHeight < scrollTop + windowHeight) && (elementHeight > scrollTop)){
        return true;
    }
    return false;
}

題目3:當(dāng)窗口滾動(dòng)時(shí),判斷一個(gè)元素是不是出現(xiàn)在窗口可視范圍。在元素第一次出現(xiàn)時(shí)在控制臺(tái)打印 true,以后再次出現(xiàn)不做任何處理。用代碼實(shí)現(xiàn)

$(window).on('scroll', function(){   // 綁定一個(gè)滑動(dòng)事件
    var $node = document.getElementById('node');   // 節(jié)點(diǎn)位置
    var switch = true; // 第一次出現(xiàn)的開關(guān)
    if(isVisible($node)){
        if( switch ){   // 判斷是否第一次
            console.log('true');
            switch = false;  // 關(guān)閉第一次
        }
    }    
});

// 判斷是否出現(xiàn)在窗口可視范圍的函數(shù)
function isVisible($node){
    var scrollTop = $(window).scrollTop();  // 滑動(dòng)高度
    var windowHeight = $(window).height();  // 可視高度
    var elementHeight = $node.offset().top   // 元素位置高度
    if((elementHeight < scrollTop + windowHeight) && (elementHeight > scrollTop)){
        return true;
        console.log('true');
    }
    return false;
}

題目4: 圖片懶加載的原理是什么?

  • 什么時(shí)圖片懶加載?

    • 當(dāng)訪問一個(gè)頁(yè)面的時(shí)候,先把 img 元素或者其他元素的背景圖片路徑替換成一張1*1px的白色圖片路徑(這樣的話就只需要請(qǐng)求一次),只有當(dāng)頁(yè)面出現(xiàn)在瀏覽起的可視范圍以內(nèi)時(shí),才設(shè)置圖片真正的路徑,讓圖片顯示出來(lái)。這就時(shí)懶加載。
  • 為什么要使用這個(gè)技術(shù)?

    • 比如購(gòu)物網(wǎng)站圖片特別多,如果一訪問頁(yè)面就發(fā)這么多請(qǐng)求,頁(yè)面加載會(huì)很慢,更有可能服務(wù)器吃不消。
    • 優(yōu)點(diǎn):減輕服務(wù)器壓力,可以讓頁(yè)面加載更快的呈現(xiàn)在用戶面前(用戶體驗(yàn)比較好)。
  • 如何實(shí)現(xiàn)?

    • 先把img元素的路徑設(shè)置為一張1*1px(白色)圖片路徑,把真實(shí)路徑地址放置在自定義屬性 data-src 中。
    • 當(dāng)頁(yè)面滑動(dòng)的時(shí)候檢查所有的img元素,看看是否在可視窗口以內(nèi),如果在視野內(nèi)在看看是否加載過,沒有的加載的話就加載圖片
可視窗口以內(nèi):要知道 滑動(dòng)高度(垂直滾動(dòng)條滾動(dòng)的距離)/窗口高度(可視區(qū)高度)/元素位置高度(元素離文檔頂部的高度)
- 滑動(dòng)高度:
    - 原生JS: window.pagaYOffset
    - jQuery: $(window).scrollTop()
- 窗口高度:
    - 原生JS: window.innerHeight
    - jQuery: $(window).height();
- 元素位置高度:
    - 原生JS: element.scrollHeight
    - jQuery: $(this).offset().top

題目5: 實(shí)現(xiàn)視頻中的圖片懶加載效果

code

最后編輯于
?著作權(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)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1、懶加載 1.什么是懶加載? 懶加載也就是延遲加載。當(dāng)訪問一個(gè)頁(yè)面的時(shí)候,先把img元素或是其他元素的背景圖片路...
    xiaolizhenzhen閱讀 70,634評(píng)論 18 160
  • 1、懶加載1.什么是懶加載?懶加載也就是延遲加載。當(dāng)訪問一個(gè)頁(yè)面的時(shí)候,先把img元素或是其他元素的背景圖片路徑替...
    Gaochengxin閱讀 410評(píng)論 1 2
  • 問答 1. 如何判斷一個(gè)元素是否出現(xiàn)在窗口可視范圍(瀏覽器的上邊緣和下邊緣之間,肉眼可視)。寫一個(gè)函數(shù) isVi...
    Maggie_77閱讀 291評(píng)論 0 0
  • 如何判斷一個(gè)元素是否出現(xiàn)在窗口可視范圍(瀏覽器的上邊緣和下邊緣之間,肉眼可視)。寫一個(gè)函數(shù) isVisible實(shí)現(xiàn)...
    _Dot912閱讀 1,780評(píng)論 10 8
  • 題目1:如何判斷一個(gè)元素是否出現(xiàn)在窗口可視范圍(瀏覽器的上邊緣和下邊緣之間,肉眼可視)。寫一個(gè)函數(shù) isVisib...
    柚丶稚橙熟時(shí)閱讀 223評(píng)論 0 0

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