本文实例讲述了js判断滚动条是否已到页面最底部或顶部的方法。分享给大家供大家参考。具体分析如下:R84HTML5中文学习网 - HTML5先行者学习网
我们经常会看到很多的网站一个返回顶部效果就是当我们滚动条到指定位置时返回顶部出来了,否则就自动隐藏了,下面就来给大家介绍这种效果实现原理与方法。R84HTML5中文学习网 - HTML5先行者学习网
当可视区域小于页面的实际高度时,判定为出现滚动条,即:R84HTML5中文学习网 - HTML5先行者学习网
if (document.documentElement.clientHeight < document.documentElement.offsetHeight) scroll = true;
R84HTML5中文学习网 - HTML5先行者学习网要使用 document.documentElement ,必须在页面头部加入声明:
R84HTML5中文学习网 - HTML5先行者学习网<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
R84HTML5中文学习网 - HTML5先行者学习网 R84HTML5中文学习网 - HTML5先行者学习网其实,这段代码是不起作用的,因为他没考虑到一个问题,就是浏览器的边框,当我们在获取页面的offsetHeight高度时是包括了浏览器的边框的,浏览器的边框是2个像素,所以这时无论在任何情况下clientHeight 始终是小于offsetHeight的,这就使得即使没有滚动条它也为true,因此我们要修正这个错误,代码应该这样改,在offsetHeight上减去4个像素,即:
R84HTML5中文学习网 - HTML5先行者学习网if (document.documentElement.clientHeight < document.documentElement.offsetHeight-4){R84HTML5中文学习网 - HTML5先行者学习网
//执行相关脚本。R84HTML5中文学习网 - HTML5先行者学习网
}
R84HTML5中文学习网 - HTML5先行者学习网还有,这里要搞清楚,上面这代码是判断横向滚动条的,我们一般要判断的是纵向滚动,代码如下:
R84HTML5中文学习网 - HTML5先行者学习网if (document.documentElement.clientWidth < document.documentElement.offsetWidth-4){R84HTML5中文学习网 - HTML5先行者学习网
//执行相关脚本。R84HTML5中文学习网 - HTML5先行者学习网
}
R84HTML5中文学习网 - HTML5先行者学习网判断滚动条是否已拉到页面最底部,可以用如下代码R84HTML5中文学习网 - HTML5先行者学习网
window.onscroll = function (){R84HTML5中文学习网 - HTML5先行者学习网
var marginBot = 0;R84HTML5中文学习网 - HTML5先行者学习网
if (document.documentElement.scrollTop){R84HTML5中文学习网 - HTML5先行者学习网
marginBot = document.documentElement.scrollHeight (document.documentElement.scrollTop+document.body.scrollTop)-document.documentElement.clientHeight;R84HTML5中文学习网 - HTML5先行者学习网
} else {R84HTML5中文学习网 - HTML5先行者学习网
marginBot = document.body.scrollHeight document.body.scrollTop- document.body.clientHeight;R84HTML5中文学习网 - HTML5先行者学习网
}R84HTML5中文学习网 - HTML5先行者学习网
if(marginBot<=0) {R84HTML5中文学习网 - HTML5先行者学习网
//do somethingR84HTML5中文学习网 - HTML5先行者学习网
}R84HTML5中文学习网 - HTML5先行者学习网
}
R84HTML5中文学习网 - HTML5先行者学习网示例2R84HTML5中文学习网 - HTML5先行者学习网
在网上找的。还挺兼容浏览器的。奇怪的是我在文档里面没找到相关信息。代码贴出来吧。R84HTML5中文学习网 - HTML5先行者学习网
/********************
R84HTML5中文学习网 - HTML5先行者学习网* 取窗口滚动条高度
R84HTML5中文学习网 - HTML5先行者学习网******************/
R84HTML5中文学习网 - HTML5先行者学习网function getScrollTop()
R84HTML5中文学习网 - HTML5先行者学习网{
R84HTML5中文学习网 - HTML5先行者学习网 var scrollTop=0;
R84HTML5中文学习网 - HTML5先行者学习网 if(document.documentElement&&document.documentElement.scrollTop)
R84HTML5中文学习网 - HTML5先行者学习网 {
R84HTML5中文学习网 - HTML5先行者学习网 scrollTop=document.documentElement.scrollTop;
R84HTML5中文学习网 - HTML5先行者学习网 }
R84HTML5中文学习网 - HTML5先行者学习网 else if(document.body)
R84HTML5中文学习网 - HTML5先行者学习网 {
R84HTML5中文学习网 - HTML5先行者学习网 scrollTop=document.body.scrollTop;
R84HTML5中文学习网 - HTML5先行者学习网 }
R84HTML5中文学习网 - HTML5先行者学习网 return scrollTop;
R84HTML5中文学习网 - HTML5先行者学习网}
R84HTML5中文学习网 - HTML5先行者学习网/********************R84HTML5中文学习网 - HTML5先行者学习网
* 取窗口可视范围的高度 R84HTML5中文学习网 - HTML5先行者学习网
*******************/R84HTML5中文学习网 - HTML5先行者学习网
function getClientHeight()R84HTML5中文学习网 - HTML5先行者学习网
{R84HTML5中文学习网 - HTML5先行者学习网
var clientHeight=0;R84HTML5中文学习网 - HTML5先行者学习网
if(document.body.clientHeight&&document.documentElement.clientHeight)R84HTML5中文学习网 - HTML5先行者学习网
{R84HTML5中文学习网 - HTML5先行者学习网
var clientHeight = (document.body.clientHeight<document.documentElement.clientHeight)?document.body.clientHeight:document.documentElement.clientHeight; R84HTML5中文学习网 - HTML5先行者学习网
}R84HTML5中文学习网 - HTML5先行者学习网
elseR84HTML5中文学习网 - HTML5先行者学习网
{R84HTML5中文学习网 - HTML5先行者学习网
var clientHeight = (document.body.clientHeight>document.documentElement.clientHeight)?document.body.clientHeight:document.documentElement.clientHeight; R84HTML5中文学习网 - HTML5先行者学习网
}R84HTML5中文学习网 - HTML5先行者学习网
return clientHeight;R84HTML5中文学习网 - HTML5先行者学习网
}R84HTML5中文学习网 - HTML5先行者学习网
/********************R84HTML5中文学习网 - HTML5先行者学习网
* 取文档内容实际高度 R84HTML5中文学习网 - HTML5先行者学习网
*******************/R84HTML5中文学习网 - HTML5先行者学习网
function getScrollHeight()R84HTML5中文学习网 - HTML5先行者学习网
{R84HTML5中文学习网 - HTML5先行者学习网
return Math.max(document.body.scrollHeight,document.documentElement.scrollHeight);R84HTML5中文学习网 - HTML5先行者学习网
}R84HTML5中文学习网 - HTML5先行者学习网
function test(){R84HTML5中文学习网 - HTML5先行者学习网
if (getScrollTop()+getClientHeight()==getScrollHeight()){R84HTML5中文学习网 - HTML5先行者学习网
alert("到达底部");R84HTML5中文学习网 - HTML5先行者学习网
}else{R84HTML5中文学习网 - HTML5先行者学习网
alert("没有到达底部");R84HTML5中文学习网 - HTML5先行者学习网
}R84HTML5中文学习网 - HTML5先行者学习网
}
R84HTML5中文学习网 - HTML5先行者学习网补充:
R84HTML5中文学习网 - HTML5先行者学习网R84HTML5中文学习网 - HTML5先行者学习网DTD已声明:R84HTML5中文学习网 - HTML5先行者学习网IER84HTML5中文学习网 - HTML5先行者学习网
document.documentElement.scrollHeight 浏览器所有内容高度 ,document.body.scrollHeight 浏览器所有内容高度R84HTML5中文学习网 - HTML5先行者学习网
document.documentElement.scrollTop 浏览器滚动部分高度,document.body.scrollTop 始终为0R84HTML5中文学习网 - HTML5先行者学习网
document.documentElement.clientHeight 浏览器可视部分高度,document.body.clientHeight 浏览器所有内容高度R84HTML5中文学习网 - HTML5先行者学习网
FFR84HTML5中文学习网 - HTML5先行者学习网
document.documentElement.scrollHeight 浏览器所有内容高度 ,document.body.scrollHeight 浏览器所有内容高度R84HTML5中文学习网 - HTML5先行者学习网
document.documentElement.scrollTop 浏览器滚动部分高度,document.body.scrollTop 始终为0R84HTML5中文学习网 - HTML5先行者学习网
document.documentElement.clientHeight 浏览器可视部分高度,document.body.clientHeight 浏览器所有内容高度R84HTML5中文学习网 - HTML5先行者学习网
ChromeR84HTML5中文学习网 - HTML5先行者学习网
document.documentElement.scrollHeight 浏览器所有内容高度, document.body.scrollHeight 浏览器所有内容高度R84HTML5中文学习网 - HTML5先行者学习网
document.documentElement.scrollTop 始终为0,document.body.scrollTop 浏览器滚动部分高度R84HTML5中文学习网 - HTML5先行者学习网
document.documentElement.clientHeight 浏览器可视部分高度,document.body.clientHeight 浏览器所有内容高度R84HTML5中文学习网 - HTML5先行者学习网
DTD未声明:R84HTML5中文学习网 - HTML5先行者学习网
IER84HTML5中文学习网 - HTML5先行者学习网
document.documentElement.scrollHeight 浏览器可视部分高度,document.body.scrollHeight 浏览器所有内容高度R84HTML5中文学习网 - HTML5先行者学习网
document.documentElement.scrollTop 始终为0,document.body.scrollTop 浏览器滚动部分高度R84HTML5中文学习网 - HTML5先行者学习网
document.documentElement.clientHeight 始终为0,document.body.clientHeight 浏览器可视部分高度R84HTML5中文学习网 - HTML5先行者学习网
FFR84HTML5中文学习网 - HTML5先行者学习网
document.documentElement.scrollHeight 浏览器可视部分高度, document.body.scrollHeight 浏览器所有内容高度R84HTML5中文学习网 - HTML5先行者学习网
document.documentElement.scrollTop 始终为0,document.body.scrollTop 浏览器滚动部分高度R84HTML5中文学习网 - HTML5先行者学习网
document.documentElement.clientHeight 浏览器所有内容高度,document.body.clientHeight 浏览器可视部分高度R84HTML5中文学习网 - HTML5先行者学习网
ChromeR84HTML5中文学习网 - HTML5先行者学习网
document.documentElement.scrollHeight 浏览器可视部分高度,document.body.scrollHeight 浏览器所有内容高度R84HTML5中文学习网 - HTML5先行者学习网
document.documentElement.scrollTop 始终为0,document.body.scrollTop 浏览器滚动部分高度R84HTML5中文学习网 - HTML5先行者学习网
document.documentElement.clientHeight 浏览器所有内容高度,document.body.clientHeight 浏览器可视部分高度R84HTML5中文学习网 - HTML5先行者学习网
浏览器所有内容高度即浏览器整个框架的高度,包括滚动条卷去部分+可视部分+底部隐藏部分的高度总和R84HTML5中文学习网 - HTML5先行者学习网
浏览器滚动部分高度即滚动条卷去部分高度即可视顶端距离整个对象顶端的高度。R84HTML5中文学习网 - HTML5先行者学习网
看懂了上面的参数我们就可以做出兼容ie,ff,chrome浏览器的滚动效果了。R84HTML5中文学习网 - HTML5先行者学习网
希望本文所述对大家的javascript程序设计有所帮助。R84HTML5中文学习网 - HTML5先行者学习网