判斷滾動(dòng)條到底部的JS代碼
判斷滾動(dòng)條到底部,需要用到DOM的三個(gè)屬性值,即scrollTop、clientHeight、scrollHeight。
scrollTop為滾動(dòng)條在Y軸上的滾動(dòng)距離。
clientHeight為內(nèi)容可視區(qū)域的高度。
scrollHeight為內(nèi)容可視區(qū)域的高度加上溢出(滾動(dòng))的距離。
從這個(gè)三個(gè)屬性的介紹就可以看出來,滾動(dòng)條到底部的條件即為scrollTop + clientHeight == scrollHeight。
廢話不多少說,趕緊上代碼(兼容不同的瀏覽器)。
//滾動(dòng)條在Y軸上的滾動(dòng)距離
function getScrollTop(){
var scrollTop = 0, bodyScrollTop = 0, documentScrollTop = 0;
if(document.body){
bodyScrollTop = document.body.scrollTop;
}
if(document.documentElement){
documentScrollTop = document.documentElement.scrollTop;
}
scrollTop = (bodyScrollTop - documentScrollTop > 0) ? bodyScrollTop : documentScrollTop;
return scrollTop;
}
//文檔的總高度
function getScrollHeight(){
var scrollHeight = 0, bodyScrollHeight = 0, documentScrollHeight = 0;
if(document.body){
bodyScrollHeight = document.body.scrollHeight;
}
if(document.documentElement){
documentScrollHeight = document.documentElement.scrollHeight;
}
scrollHeight = (bodyScrollHeight - documentScrollHeight > 0) ? bodyScrollHeight : documentScrollHeight;
return scrollHeight;
}
//瀏覽器視口的高度
function getWindowHeight(){
var windowHeight = 0;
if(document.compatMode == "CSS1Compat"){
windowHeight = document.documentElement.clientHeight;
}else{
windowHeight = document.body.clientHeight;
}
return windowHeight;
}
window.onscroll = function(){
if(getScrollTop() + getWindowHeight() == getScrollHeight()){
alert("you are in the bottom!");
}
};
如果用jquery來實(shí)現(xiàn)的話就更簡單了,
$(window).scroll(function(){
var scrollTop = $(this).scrollTop();
var scrollHeight = $(document).height();
var windowHeight = $(this).height();
if(scrollTop + windowHeight == scrollHeight){
alert("you are in the bottom");
}
});
如果要判斷在某一個(gè)元素中的滾動(dòng)條是否到底部,根據(jù)類似的思想,將document.body換成特定的元素即可,獲取scrollTop和scrollHeight的方式是一樣的,但是獲取元素可見高度需要用到offsetHeight屬性,直接依葫蘆畫瓢即可。
- js/jquery獲取瀏覽器窗口可視區(qū)域高度和寬度以及滾動(dòng)條高度實(shí)現(xiàn)代碼
- js實(shí)現(xiàn)的文字橫向無間斷滾動(dòng)
- js操作滾動(dòng)條事件實(shí)例
- 徹底搞懂JS無縫滾動(dòng)代碼
- js獲取滾動(dòng)距離的方法
- 當(dāng)滾動(dòng)條滾動(dòng)到頁面底部自動(dòng)加載增加內(nèi)容的js代碼
- 淺析js 文字滾動(dòng)效果
- js判斷滾動(dòng)條是否已到頁面最底部或頂部實(shí)例
- js實(shí)現(xiàn)滾動(dòng)條滾動(dòng)到頁面底部繼續(xù)加載
- 原生JS實(shí)現(xiàn)目錄滾動(dòng)特效
相關(guān)文章
element-ui 上傳圖片后標(biāo)注坐標(biāo)點(diǎn)
有個(gè)組件庫的名稱叫做element-ui,基于Vue2.0開發(fā),提供了豐富的PC端組件,本文通過實(shí)例代碼給大家介紹element-ui 上傳圖片后標(biāo)注坐標(biāo)點(diǎn)的示例代碼,感興趣的朋友跟隨小編一起看看吧2021-07-07
學(xué)習(xí)JavaScript鼠標(biāo)響應(yīng)事件
這篇文章主要帶領(lǐng)大家學(xué)習(xí)JavaScript鼠標(biāo)響應(yīng)事件,為大家分享了一個(gè)簡單的鼠標(biāo)模擬案例,感興趣的小伙伴們可以參考一下2015-12-12
JS獲取多維數(shù)組中相同鍵的值實(shí)現(xiàn)方法示例
這篇文章主要介紹了JS獲取多維數(shù)組中相同鍵的值實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了JS數(shù)組遍歷、判斷、鍵值獲取等操作技巧,需要的朋友可以參考下2017-01-01
js中通過split函數(shù)分割字符串成數(shù)組小例子
分割字符串成數(shù)組的方法有很多,不過使用最多的還是split函數(shù),接下來為大家介紹下它的具體使用方法,感興趣的朋友可以參考下2013-09-09
JavaScript實(shí)現(xiàn)數(shù)組對象轉(zhuǎn)換為鍵值對的四種方式
本文探討了將包含 {icon: "abc", url: "123"} 形式對象的數(shù)組轉(zhuǎn)換為鍵值對形式的四種方法,并從實(shí)現(xiàn)方式的簡潔性、可讀性和性能角度進(jìn)行了分析比較,感興趣的朋友可以參考下2024-02-02
js用Date對象的setDate()函數(shù)對日期進(jìn)行加減操作
在某個(gè)日期上加減天數(shù)來說,其實(shí)只要調(diào)用Date對象的setDate()函數(shù)就可以了,具體方法如下2014-09-09
webpack自動(dòng)打包和熱更新的實(shí)現(xiàn)方法
這篇文章主要介紹了webpack自動(dòng)打包和熱更新的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06
ES6新語法Object.freeze和Object.seal基本使用
這篇文章主要為大家介紹了ES6新語法Object.freeze和Object.seal基本使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01

