29.jquery懶加載、回到頂部

問答

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

function isVisible($node){
        var scrollTop=$(window).scrollTop(), //這是垂直滾動距離
            winH=$(window).height(), //這是窗口的高度,固定的
            offsetTop=$node.offset().top //這是該元素垂直方向的偏移量
        $(window).on('scroll',function(){
            if( (offsetTop<winH+scrollTop)&&(offsetTop>scrollTop) ){
                return true;
            }else{
                return false;
            }
        });
    }

2.當(dāng)窗口滾動時,判斷一個元素是不是出現(xiàn)在窗口可視范圍。每次出現(xiàn)都在控制臺打印 true 。用代碼實現(xiàn)

var $p=$('p');
$(window).on('scroll',function(){
    isVisible($p)
});

function isVisible($node){
    var winH=$(window).height(),
        scrollTop=$(window).scrollTop(),
        offsetTop=$node.offset().top;
    if( offsetTop<winH+scrollTop && offsetTop>scrollTop){
        console.log(true);
    }else{
        console.log(false);
    }
}

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

 var $p=$('.test-p');
    $(window).on('scroll',function(){
        if( $p.data('isVisi') ){
            return;
        }else{
            isVisible($p);
        }   
    });

    function isVisible($node){
        var winH=$(window).height(),
            scrollTop=$(window).scrollTop(),
            offsetTop=$node.offset().top;
        if( offsetTop<winH+scrollTop && offsetTop>scrollTop){
            console.log(true);
            $p.data('isVisi',true);
        }else{
            return;
        }
    };

demo

4.圖片懶加載的原理是什么?

原理:當(dāng)網(wǎng)頁瀏覽時出現(xiàn)很多的圖片時,如淘寶,京東,如果同時全部加載出來就會非常慢,效率很低,可能會導(dǎo)致網(wǎng)頁卡死的情況。
解決辦法:直到該圖片出現(xiàn)在用戶的視線范圍內(nèi)時,才加載該圖片。
關(guān)鍵的步驟:
判斷圖片是否可見:屏幕滾動的高度+窗口高度 > 圖片到頁面頂部的距離,那么該圖片即是可見的;
轉(zhuǎn)換圖片的可見狀態(tài):圖片加載是通過圖片的src屬性來控制的。
給每一個圖片的src設(shè)一個相同的初始值,這樣只會發(fā)起一次請求,可以先把圖片的src屬性設(shè)置成缺省圖片。
然后等圖片到窗口可見時,把圖片的src路徑換成真實的src路徑,這樣圖片的內(nèi)容就能被加載出來了。

代碼

1.實現(xiàn)如下回到頂部效果

當(dāng)頁面滾動到一定距離時,窗口右下角會出現(xiàn)回到頂部按鈕,點擊按鈕頁面會滾動到頂部。
預(yù)覽1
demo

2.實現(xiàn)如下圖片懶加載效果

預(yù)覽2
demo

3.實現(xiàn)如下無限滾動效果。

當(dāng)頁面滾動會無限加載數(shù)據(jù)展示到頁面。當(dāng)鼠標(biāo)放置上去會變色
提示:當(dāng)?shù)撞考虞d更多按鈕出現(xiàn)時,通過 ajax 發(fā)送請求獲取數(shù)據(jù),append 到容器里。事件綁定使用代理方式。
代碼3
demo

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

  • 問答 1. 如何判斷一個元素是否出現(xiàn)在窗口可視范圍(瀏覽器的上邊緣和下邊緣之間,肉眼可視)。寫一個函數(shù) isVis...
    小木子2016閱讀 232評論 0 0
  • 問答 1、如何判斷一個元素是否出現(xiàn)在窗口可視范圍(瀏覽器的上邊緣和下邊緣之間,肉眼可視)。寫一個函數(shù) isVisi...
    咸吧閱讀 181評論 0 0
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補...
    _Yfling閱讀 14,090評論 1 92
  • 1.如何判斷一個元素是否出現(xiàn)在窗口可視范圍(瀏覽器的上邊緣和下邊緣之間,肉眼可視)。寫一個函數(shù) isVisible...
    GarenWang閱讀 568評論 0 2
  • 快訊:(2017年5月18日)下午第八節(jié)課,通山縣鎮(zhèn)南中學(xué)三(6)班全體同學(xué)在班主任方良金老師的組織下,進行了集體...
    鎮(zhèn)南方良金閱讀 640評論 0 3

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