圖片懶加載-2(單張圖片懶加載)

前期步驟和首屏幕懶加載的步驟類似。以下分析的是不同的地方。

延遲加載.png

顯然,需要用window.onscroll去監(jiān)聽事件。但是有一個注意點(diǎn),當(dāng)滿足A<B的條件后,不管圖片是否加載成功(不成功是因?yàn)閳D片地址錯誤導(dǎo)致無法加載),此時window.onscroll應(yīng)該不再去監(jiān)聽滾動事件了。

    var banner = document.querySelector('.banner');
    var imgFir = banner.getElementsByTagName('img')[0];

    window.onscroll = function () {
        if (banner.isLoad) { // 已經(jīng)加載過了
            return; // 就不再執(zhí)行了
        }
        var A = banner.offsetHeight + utils.offset(banner).top;
        var B = utils.win('clientHeight') + utils.win('scrollTop');

        if (A < B) {
            // 當(dāng)條件,加載真實(shí)的圖片,第一次加載完成后,再讓頁面繼續(xù)滾動的過程中,
            // A<B的條件一直成立,又重新的執(zhí)行了下面的操作,導(dǎo)致了重復(fù)給一個容器中的圖片進(jìn)行加載
            var oImg = new Image();
            oImg.src = imgFir.getAttribute('trueImg');
            oImg.onload = function () {
                console.log('ok');
                imgFir.src = oImg.src;
                imgFir.style.display = 'block';
                oImg = null;
            }
            banner.isLoad = true; // -> 設(shè)置一個自定義屬性,告訴瀏覽器已經(jīng)把圖片加載完了
            // 不管是否正常加載,只要處理過一次,以后都不再處理了
        }
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,058評論 25 709
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,369評論 4 61
  • 我喜歡將人生的80年跟一天中的24小時進(jìn)行對照 人生時鐘的計(jì)算方法十分簡單。24小時相當(dāng)于1440分鐘,而將此分成...
    _Claudia閱讀 576評論 0 0
  • 茶之美,美在名。 中國茶喜歡以地名加特色命名,大多如此。 而我國地大物博,江山秀美,自古名山出好茶。 比如“黃山歸...
    茶人老七閱讀 227評論 0 0
  • 一時不知怎么開頭,還是要說。 自從高中起便開始了住校的生涯,一直到大學(xué)。充滿我的五六年青春是她們這些可愛的人,像花...
    蔚藍(lán)11閱讀 227評論 0 1

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