問答
1.如何判斷一個元素是否出現在窗口可視范圍(瀏覽器的上邊緣和下邊緣之間,肉眼可視)。寫一個函數 isVisible實現
function isVisible($ele){
var winH=$(window).height(),
scrollTop=$(window).scrollTop(),
offsetTop=$ele.offset().top,
$eleH=$ele.innerHeight();
if((winH+scrollTop>offsetTop)&&(scrollTop<offsetTop+$eleH)){
return true;
}else{
return false;
}
}
2.當窗口滾動時,判斷一個元素是不是出現在窗口可視范圍。每次出現都在控制臺打印 true 。用代碼實現
//直接調用上面的isVisible()函數
$(window).on("scroll",function(){
if(isVisible($(".mid"))){
console.log(true);
}
})
3.當窗口滾動時,判斷一個元素是不是出現在窗口可視范圍。在元素第一次出現時在控制臺打印 true,以后再次出現不做任何處理。用代碼實現
var isShow=false;
$(window).on("scroll",function(){
if(isShow){
return;
}
if(isVisible($(".mid"))){
isShow=true;
console.log(true);
}
})
4. 圖片懶加載的原理是什么?
頁面中所有的圖片的src中存放的都是同一張圖片(例如一張白圖),這張白圖只需要加載一次,圖片真正的地址存儲在自定義屬性data-src里面。然后判斷某個元素是否出現在窗口的可視區域,如果出現在可視區域,則修改元素的src屬性,使其變成圖片真正的地址,從而讓圖片顯示出來。
使用懶加載的方式,可避免出現一次性向服務器發送大量請求,導致服務器無法及時響應、用戶等待過長時間、頁面崩潰等問題的發生。