懶加載

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

function isVisible($img) {
        var scrollTop = $(window).scrollTop()
        var windowHeight = $(window).height()
        var offsetTop = $img.offset().top
        if (offsetTop  < scrollTop + windowHeight && offsetTop > scrollTop) {
            return true
        }
        return false
 }

2、當窗口滾動時,判斷一個元素是不是出現在窗口可視范圍。每次出現都在控制臺打印 true 。用代碼實現

$(window).on('scroll', function() {
    if(isVisible($elem)) {
        console.log('true')
    }
})
function isVisible($node) {
    var nodeT = $node.offset().top
    var nodeH = $node.outerHeight()
    var windowH = $(window).height()
    var scrollT = $(window).scrollTop()
    if(nodeT + nodeH > scrollT  && nodeT < windowH + scrollT) {
        return true
    }
    return false
}

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

var hasVisible = false
$(window).on('scroll', function() {
    if(hasVisible) {
        return
    }
    if(isVisible($elem)) {
        hasVisible = true
        console.log('true')
    }
})
function isVisible($node) {
    var nodeT = $node.offset().top
    var nodeH = $node.outerHeight()
    var windowH = $(window).height()
    var scrollT = $(window).scrollTop()
    if(nodeT + nodeH > scrollT  && nodeT < windowH + scrollT) {
        return true
    }
    return false
}

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

a)對于所有圖片img標簽把真實的地址放入自定義屬性data-src中
b)當頁面滾動時,檢查頁面所有的img標簽,看看這個標簽是否出現到我們的視野,當初出現在我們的視野中時,再去判斷他是否加載過,如果沒有加載,加載他。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 如何判斷一個元素是否出現在窗口可視范圍(瀏覽器的上邊緣和下邊緣之間,肉眼可視)。寫一個函數 isVisible實現...
    _Dot912閱讀 1,704評論 10 8
  • 1.如何判斷一個元素是否出現在窗口可視范圍(瀏覽器的上邊緣和下邊緣之間,肉眼可視)。寫一個函數 isVisible...
    GarenWang閱讀 478評論 0 2
  • 懶加載 如何判斷一個元素是否出現在窗口可視范圍(瀏覽器的上邊緣和下邊緣之間,肉眼可視)。寫一個函數 isVisib...
    marmot_ning閱讀 274評論 0 0
  • 題目1:如何判斷一個元素是否出現在窗口可視范圍(瀏覽器的上邊緣和下邊緣之間,肉眼可視)。寫一個函數 isVisib...
    阿魯提爾閱讀 351評論 0 1
  • 1、如何判斷一個元素是否出現在窗口可視范圍(瀏覽器的上邊緣和下邊緣之間,肉眼可視)?寫一個函數 isVisible...
    Jeff12138閱讀 235評論 0 0