广

JavaScript

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

    js获取滚动条距离浏览器顶部,底部的高度

    2018-04-05 08:32:01 次阅读 稿源:互联网
    零七广告

    做web开发经常会碰到需要获取浏览器的滚动条与顶部和底部的距离,然后做相应的处理动作。下面作者就如何通过js来获取浏览器滚动条距离浏览器顶部和底部的高度做一下分享,这个是同时兼容ie和firefox的。

    首先我们需要知道的两个定义是:

    滚动条距离浏览器顶部的高度 = 窗口滚动条高度;

    滚动条距离浏览器底部的高度 = 文档(页面)内容实际高度 - 滚动条距离浏览器顶部的高度 - 窗口可视范围的高度;

    好了,明白了这个定义,那我们就来具体看看如何获取各种高度的方法,下面同时举了一个示例。

    获取窗口可视范围的高度

    1. function getClientHeight(){    
    2.     var clientHeight=0;    
    3.     if(document.body.clientHeight&&document.documentElement.clientHeight){    
    4.         var clientHeight=(document.body.clientHeight<document.documentElement.clientHeight)?document.body.clientHeight:document.documentElement.clientHeight;            
    5.     }else{    
    6.         var clientHeight=(document.body.clientHeight>document.documentElement.clientHeight)?document.body.clientHeight:document.documentElement.clientHeight;        
    7.     }    
    8.     return clientHeight;    

    获取窗口滚动条高度

    1. function getScrollTop(){    
    2.     var scrollTop=0;    
    3.     if(document.documentElement&&document.documentElement.scrollTop){    
    4.         scrollTop=document.documentElement.scrollTop;    
    5.     }else if(document.body){    
    6.         scrollTop=document.body.scrollTop;    
    7.     }    
    8.     return scrollTop;    

    获取文档内容实际高度

    1. function getScrollHeight(){    
    2.     return Math.max(document.body.scrollHeight,document.documentElement.scrollHeight);    

    下面是具体的示例代码,注意这里为了演示效果使用了固定悬浮框的效果,在ie下面固定悬浮效果与上面的代码有些冲突不起作用,这里不深究了,读者可以在firefox下面看效果,这个代码本身是没有问题的。

    1. <html> 
    2. <head> 
    3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    4. <title>js获取滚动条距离浏览器顶部,底部的高度</title> 
    5. <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script> 
    6. <script type="text/javascript"> 
    7. //取窗口可视范围的高度 
    8. function getClientHeight(){    
    9.     var clientHeight=0;    
    10.     if(document.body.clientHeight&&document.documentElement.clientHeight){    
    11.         var clientHeight=(document.body.clientHeight<document.documentElement.clientHeight)?document.body.clientHeight:document.documentElement.clientHeight;            
    12.     }else{    
    13.         var clientHeight=(document.body.clientHeight>document.documentElement.clientHeight)?document.body.clientHeight:document.documentElement.clientHeight;        
    14.     }    
    15.     return clientHeight;    
    16. //取窗口滚动条高度 
    17. function getScrollTop(){    
    18.     var scrollTop=0;    
    19.     if(document.documentElement&&document.documentElement.scrollTop){    
    20.         scrollTop=document.documentElement.scrollTop;    
    21.     }else if(document.body){    
    22.         scrollTop=document.body.scrollTop;    
    23.     }    
    24.     return scrollTop;    
    25. //取文档内容实际高度 
    26. function getScrollHeight(){    
    27.     return Math.max(document.body.scrollHeight,document.documentElement.scrollHeight);    
    28. window.onscroll=function(){ 
    29.     var height=getClientHeight(); 
    30.     var theight=getScrollTop(); 
    31.     var rheight=getScrollHeight(); 
    32.     var bheight=rheight-theight-height; 
    33.     document.getElementById('show').innerHTML='此时浏览器可见区域高度为:'+height+'<br />此时文档内容实际高度为:'+rheight+'<br />此时滚动条距离顶部的高度为:'+theight+'<br />此时滚动条距离底部的高度为:'+bheight; 
    34. function fixDiv(div_id,offsetTop){ 
    35.     var offsetTop=arguments[1]?arguments[1]:0; 
    36.     var Obj=$('#'+div_id); 
    37.     var ObjObjTop=Obj.offset().top; 
    38.     var isIE6=$.browser.msie && $.browser.version == '6.0'; 
    39.     if(isIE6){ 
    40.         $(window).scroll(function(){ 
    41.             if($(window).scrollTop()<=ObjTop){ 
    42.                     Obj.css({ 
    43.                         'position':'relative', 
    44.                         'top':0 
    45.                     }); 
    46.             }else{ 
    47.                 Obj.css({ 
    48.                     'position':'absolute', 
    49.                     'top':$(window).scrollTop()+offsetTop+'px', 
    50.                     'z-index':1 
    51.                 }); 
    52.             } 
    53.         }); 
    54.     }else{ 
    55.         $(window).scroll(function(){ 
    56.             if($(window).scrollTop()<=ObjTop){ 
    57.                 Obj.css({ 
    58.                     'position':'relative', 
    59.                     'top':0 
    60.                 }); 
    61.             }else{ 
    62.                 Obj.css({ 
    63.                     'position':'fixed', 
    64.                     'top':0+offsetTop+'px', 
    65.                     'z-index':1 
    66.                 }); 
    67.             } 
    68.         }); 
    69.     } 
    70. $(function(){fixDiv('show',5);}); 
    71. </script> 
    72. </head> 
    73. <body> 
    74. <div style="height:500px;"></div> 
    75. <div>http://www.daimajiayuan.com/sitejs-17231-1.html</div> 
    76. <div id="show"></div> 
    77. <div style="height:2000px;"></div> 
    78. </body> 
    79. </html> 

    零七网部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与零七网进行文章共享合作。

    零七广告
    零七广告
    零七广告
    零七广告