29.jquery懶加載、回到頂部

問答

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

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.當窗口滾動時,判斷一個元素是不是出現在窗口可視范圍。每次出現都在控制臺打印 true 。用代碼實現

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.當窗口滾動時,判斷一個元素是不是出現在窗口可視范圍。在元素第一次出現時在控制臺打印 true,以后再次出現不做任何處理。用代碼實現

 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.圖片懶加載的原理是什么?

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

代碼

1.實現如下回到頂部效果

當頁面滾動到一定距離時,窗口右下角會出現回到頂部按鈕,點擊按鈕頁面會滾動到頂部。
預覽1
demo

2.實現如下圖片懶加載效果

預覽2
demo

3.實現如下無限滾動效果。

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

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

相關閱讀更多精彩內容

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

友情鏈接更多精彩內容