为窗口添加滚动条事件其实很简单 就是window.οnscrοll=function()
但是在获取滚动条距离的时候要做到兼容
document.documentElement.scrollTop----->获取当前页面滚动条的纵坐标位置 但是chrome不兼容 对应的是HTML标签
而document.body.scrollTop对应的是BODY标签 在w3c下 它的值恒为0;
所以,对于有doctype声明的页面里使用document.documentElement.scrollTop来获取
对于没有doctype声明的页面可以使用document.body.scrollTop来获取
为了兼容可以这样表示
var scrollTop=document.documentElement.scrollTop||document.body.scrollTop
下面以一个右侧悬浮框的代码为例
代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>右侧悬浮框</title>
<style type="text/css">
#div1{
width: 100px;
height: 150px;
background-color: red;
position: absolute;
right: 0;
bottom: 0;
}
</style>
<script type="text/javascript">
window.οnscrοll=function()
{
var oDiv=document.getElementById('div1');
var scrollTop=document.documentElement.scrollTop||document.body.scrollTop; //做兼容
startMove(parseInt((document.documentElement.clientHeight-oDiv.offsetHeight)/2+scrollTop));
//(可视区域高度-div的高度)/2+滚动条的高度
}
var timer=null;
function startMove(iTarget)
{
var oDiv=document.getElementById('div1')
clearInterval(timer);
timer=setInterval(function(){
var speed=(iTarget-oDiv.offsetTop)/8; //速度可变
speed=speed>0?Math.ceil(speed):Math.floor(speed); //速度可能为小数,取整
if(oDiv.offsetTop==iTarget){
clearInterval(timer);
}
else
{
oDiv.style.top=oDiv.offsetTop+speed+'px';
}
},30)
}
</script>
</head>
<body style="height:2000px;">
<div id="div1">
</div>
</body>
</html>