首先我要实现的效果是:不管浏览器的滚动条如何滚动,div始终在页面的某个位置不随滚动条的滚动而改变,这里只使用浏览器的Y轴滚动条。
要实现这个效果思路其实很简单,首先我要确定浏览器在静态时div在页面的位置(即页面距离浏览器窗口的顶部距离theTop),然后随着滚动条的滚动,我需要随时获取滚动值scrollTop,将两者相加,就可以实现想要的效果。
CSS部分:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 #con{width:300px;height:100px;border:1px red solid;position:absolute;top:150px;}
HTML部分:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 <body style="height:1000px;"> 2 <div id="con"> 3 </div>
JS部分:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 <script> 2 var tips; //声明变量 3 var theTop = 150;//获取静态时div距离浏览器窗口顶端的距离 4 function initFloatTips() 5 { 6 tips = document.getElementById('con');//通过ID获取div 7 moveTips();//执行移动函数 8 } 9 function moveTips() 10 { 11 /*实现浏览器兼容,pos为实时获取的scrollTop值*/ 12 if (window.innerHeight) 13 { 14 pos = window.pageYOffset ; }else if (document.documentElement && document.documentElement.scrollTop) { 15 pos = document.documentElement.scrollTop; 16 }else if (document.body) { 17 pos = document.body.scrollTop; 18 } 19 // 20 pos=pos+theTop;//实现div始终在页面的某个位置 21 tips.style.top = pos+"px"; 22 setTimeout(moveTips,10);//设置监听器,隔10毫秒监听一次 23 } 24 initFloatTips();//执行函数 25 </script>
值得注意的一点是: pos=pos+theTop;获取的只是一个值,不是浏览器可以是别的具体的像素值,所以后面需要将这个值转化成浏览器可以识别的像素值,不可落下!