通過Jquery判斷頁面元素是否在瀏覽器的可視區(qū)域內(nèi)

前端開發(fā)中,有時(shí)需要判斷某個(gè)元素是否在瀏覽器的可視區(qū)域內(nèi),或者是否已經(jīng)滾動出了可視區(qū)域.首先想到的便是JavaScript操作,原生方法自然可以,不過jQuery已經(jīng)封裝了一些屬性,使用起來更方便些,我們這里就討論這種Jquery的方式.(伸手黨可直接看文章屁股 :cool:) 假設(shè)此元素為 #item,先說幾個(gè)關(guān)鍵的屬性:

JavaScript1:
jQuery('#item').offset().top

item 的絕對偏移量,指#item的實(shí)際尺寸(即不包括外邊框margin)的上邊界到頁面頂端的距離.這個(gè)值不隨窗口滾動而改變

JavaScript2:
jQuery('#item').outerHeight()

item 的實(shí)際尺寸,即 height+padding+border

JavaScript3:jQuery('#item').outerHeight(true)#item的實(shí)際尺寸及外邊距,即 height+padding+border+margin

JavaScript4:jQuery(window).scrollTop()窗口滾動的頂部偏移量,即此時(shí)頁面的上邊界到可視區(qū)域的上邊界的偏移量,簡單的可以理解成整個(gè)頁面滾動了多少距離JavaScript1jQuery(window).height()

瀏覽器窗口可視區(qū)域的高度:用腳后跟想想就能想到,在窗口上下滾動的情況下,一個(gè)頁面元素的狀態(tài)有3種,1.向上滾動超出可視區(qū)域,2.向下滾動超出可視區(qū)域,3.在可視區(qū)域內(nèi).很明顯,我們需要的就是1和2兩種情況. 情況1: 由于元素隨頁面向上滾動,所以自然能想到,在頁面頂部偏移量不斷增加的過程中,邊界是從上至下經(jīng)過一段距離,而這個(gè)距離的區(qū)域恰好就是元素本身的偏移量加上元素本身的高度,所以當(dāng)

JavaScript1:
jQuery(window).scrollTop()>(jQuery('#item').offset().top+jQuery('#item').outerHeight())這個(gè)表達(dá)式結(jié)果為true時(shí),表示元素已經(jīng)向上滾動,并超出了可視區(qū)域.情況2: 與情況1相反,向下滾動的過程,頁面頂部的偏移量是在不斷減少中,所以當(dāng)它小于元素偏移量與可視區(qū)域高度的差值的時(shí)候,元素則向下并超出了可視區(qū)域,即

JavaScript2:jQuery(window).scrollTop()<</span>(jQuery('#item').offset().top-jQuery(window).height())那么結(jié)論就是將這兩種情況作或運(yùn)算即可達(dá)到目的.以下表達(dá)式結(jié)果如果為true,則 #item 不在可視區(qū)域內(nèi).反之則在可視區(qū)域內(nèi).

JavaScript3:(jQuery(window).scrollTop()>(jQuery('#item').offset().top+jQuery('#item').outerHeight()))||((jQuery(window).scroll

--

JQuery監(jiān)聽頁面滾動總結(jié)

1、當(dāng)前滾動的地方的窗口頂端到整個(gè)頁面頂端的距離:

    var winPos = $(window).scrollTop();

2、獲取指定元素的頁面位置:

    $(val).offset().top;

3、對頁面滾動條滾動的監(jiān)聽:要放在頁面加載的時(shí)候

  $(window).scroll(function(event){



});

4、設(shè)置滾動條到指定位置。$(window).scrollTop(offset)。

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

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

  • Window和document對象的區(qū)別 window對象window對象表示瀏覽器中打開的窗口window對象是...
    FConfidence閱讀 2,368評論 0 5
  • 前言 CSSOM全稱CSS對象模型,涉及兩部分內(nèi)容,第一部分和操作樣式表相關(guān),第二部分和元素尺寸相關(guān),本文介紹第二...
    江楓閱讀 3,110評論 1 10
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 14,200評論 1 92
  • 上一篇:011-移動支付09-支付寶支付-iOS端開發(fā) 一、jar包及Demo 從官網(wǎng)下載,會得到j(luò)ar包及Dem...
    AncientMing閱讀 431評論 0 0
  • 今天看Google-Simple-Topeka中項(xiàng)目中比較實(shí)用的圖片選擇自定義控件。選中后有個(gè)小的邊框效果。界面簡...
    一洼世界閱讀 438評論 0 0

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