判斷滾動(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è)屬性的介紹就可以看出來(lái)辖众,滾動(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){
bSH = document.body.scrollHeight;
}
if(document.documentElement){
dSH = document.documentElement.scrollHeight;
}
scrollHeight = (bSH - dSH > 0) ? bSH : dSH ;
return scrollHeight;
}
瀏覽器視口的高度
function getWindowHeight(){
var windowHeight = 0;
if(document.compatMode == "CSS1Compat"){
windowHeight = document.documentElement.clientHeight;
}else{
windowHeight = document.body.clientHeight;
}
return windowHeight;
}
已經(jīng)到最底部了凹炸!!
window.onscroll = function(){
if(getScrollTop() + getWindowHeight() == getScrollHeight()){
alert("已經(jīng)到最底部了戏阅!!");
}
};
如果用jquery來(lái)實(shí)現(xiàn)的話就更簡(jiǎn)單了,
$(window).scroll(function(){
var scrollTop = $(this).scrollTop();
var scrollHeight = $(document).height();
var windowHeight = $(this).height();
if(scrollTop + windowHeight == scrollHeight){
alert("已經(jīng)到最底部了啤它!");
}
});
如果要判斷在某一個(gè)元素中的滾動(dòng)條是否到底部奕筐,根據(jù)類(lèi)似的思想,將document.body換成特定的元素即可变骡,獲取scrollTop和scrollHeight的方式是一樣的离赫,但是獲取元素可見(jiàn)高度需要用到offsetHeight屬性,直接依葫蘆畫(huà)瓢即可塌碌。