JS学习40:计算滚动条的宽度

http://qianduanblog.com/post/js-learning-40-get-scrollbar-width.html

昨天在于江水的博客里看到说弹窗的相关文章(详见:http://yujiangshui.com/review-how-to-make-popup-mask-effect/),里面提到了滚动条的宽度计算,其实滚动条的宽度不难计算,而且非常的简单。

在计算滚动条之前,说明下滚动条的占位方式。在PC浏览器中,滚动条是占位元素的内边距和内容区域的;而在移动浏览器中,滚动条是不占用内边距和内容区域,并且还及时显隐。因此,只需要在在PC浏览器中计算滚动条的宽度,尤其是在全屏弹窗不可滚动的情况中。

详细方法如下(offsetWidth-clientWidth):


  
  
  1. function getScrollbarWidth() {
  2. var oP = document.createElement('p'),
  3. styles = {
  4. width: '100px',
  5. height: '100px',
  6. overflowY: 'scroll'
  7. }, i, scrollbarWidth;
  8. for (i in styles) oP.style[i] = styles[i];
  9. document.body.appendChild(oP);
  10. scrollbarWidth = oP.offsetWidth - oP.clientWidth;
  11. oP.remove();
  12. return scrollbarWidth;
  13. }

关于offsetWidthclientWidth更多知识参考JS学习13:screen/client/offset/scroll/inner/avail的width/left

方法2(clientWidth-clientWidth):


  
  
  1. function getScrollbarWidth() {
  2. var oP = document.createElement('p'),
  3. styles = {
  4. width: '100px',
  5. height: '100px'
  6. }, i, clientWidth1, clientWidth2, scrollbarWidth;
  7. for (i in styles) oP.style[i] = styles[i];
  8. document.body.appendChild(oP);
  9. clientWidth1 = oP.clientWidth;
  10. oP.style.overflowY = 'scroll';
  11. clientWidth2 = oP.clientWidth;
  12. scrollbarWidth = clientWidth1 - clientWidth2;
  13. oP.remove();
  14. return scrollbarWidth;
  15. }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值