[JavaScript]如何获取系统滚动条的宽度。

我们为什么要获取系统滚动条的宽度呢?因为有时候我们需要动态的计算它们,或加上或减去,哪怕我们只是想要知道,那也是一种需求。可是如何才能知道呢?

系统滚动条的宽度等于:一个带滚动条的div的offsetWidth-clientWidth。至于这个值怎么得出的,简单地说,运气和测试。

这里我们的滚动条都是指未经过额外指定样式的,带样式的我没有测试,应该也可以。

方法其实很简单,向document.body中加入元素,这个元素是一个带scroll的div,通过这个HTML元素,我们就可以取得它的offsetWidth和clientWidth,这里有个小技巧,就是在非IE下,我们只要有个style="overflow:scroll"的div就好,但是在IE下,因为div没有设置宽高,所以clientWidth和clientHeigth无法取得数值。因此这里我们设置一个值,我暂定为100,因为通常不会有滚动条宽度那么宽,25都已经显得很粗了。然后就是计算scroll的宽度,然后把他们存起来,以免每次都要重新计算。最后将它们从document.body中移除,这一过程不会显示在页面中,因此不会影响布局。

这个函数第一次运行的时机最好是在页面加载完的时候,这样以后每次调用这个页面,都不会去计算它了。

下面是实现它的代码,已经在IE6/8/Chrome/Safari/Firefox下验证通过。

 1  < html >
 2       < head >
 3           < title > Test  -  scroll bar width < / title>
 4       < / head>
 5       < body >
 6           < h1 > scroll bar width < / h1>
 7           < div style = " overflow:scroll; width:320px; height:240px; background-color:#eeeeee; " >< / div>
 8           < div id = " output " >
 9              
10           < / div>
11           < script type = " text/javascript " >
12               var  __scrollBarWidth  =   null ;
13               function  getScrollBarWidth() {
14                   if  (__scrollBarWidth)  return  __scrollBarWidth;
15 
16                   var  scrollBarHelper  =  document.createElement( " div " );
17                   //  if MSIE
18                   //  如此设置的话,scroll bar的最大宽度不能大于100px(通常不会)。
19                  scrollBarHelper.style.cssText  =   " overflow:scroll;width:100px;height:100px; "
20                   //  else OTHER Browsers:
21                   //  scrollBarHelper.style.cssText = "overflow:scroll;";
22                  document.body.appendChild(scrollBarHelper);
23                   if  (scrollBarHelper) {
24                      __scrollBarWidth  =  {
25                          horizontal: scrollBarHelper.offsetHeight - scrollBarHelper.clientHeight,
26                          vertical:  scrollBarHelper.offsetWidth - scrollBarHelper.clientWidth
27                      };
28                  }
29                  document.body.removeChild(scrollBarHelper);
30                   return  __scrollBarWidth;
31              }
32               function  test() {
33                   var  scrollBarWidth  =  getScrollBarWidth();
34                  document.getElementById( " output " ).innerHTML  +=   " scroll bar width : horizontal :  "   +  scrollBarWidth.horizontal
35                    +   "  vertical :  "   +  scrollBarWidth.vertical  +   " <br /> " ;
36              }
37              test();
38           < / script>
39       < / body>
40  < / html>


如何修改系统滚动条宽度呢?

这里提供XP下的方法,Win7下我不知道怎么设置。

方法:右键桌面,属性,外观,高级,滚动条,设置一个整数(如图所示25),一路确定保存即可。然后刷新页面。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值