js利用offsetWidth和clientWidth来计算滚动条的宽度

本文介绍了一种计算浏览器滚动条宽度的方法,通过创建一个带有滚动条的元素并利用offsetWidth和clientWidth属性,解决了不同浏览器下滚动条宽度不一致的问题。

大家好,清明节即将来来临,清明时节雨纷纷,路上行人欲断魂,借问酒家何处有,牧童遥指杏花村!!哈哈哈哈!言归正传,今天我主要介绍一个计算滚动条宽度的例子。

前言

其实,很多情况下滚动条宽度是不用计算的,特别是谷歌浏览器,可以对滚动条进行美化,具体请看CSS选中状态修改,谷歌滚动轴修改 这里例子,已经定义了滚动条的宽度是9px加上padding-left的一个像素,所以滚动条的宽度应该是10px,但是,这样计算出来有浏览器兼容问题,你的IE浏览器的滚动条宽度不一定是10px,今天,我用offsetWidth和clientWidth来计算一下滚动条的宽度。

占位方式

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

offsetWidth-clientWidth方法

说到offsetWidth和clientWidth,不少朋友迷茫了,这个宽度是什么意思呢?jquery的height()和javascript的height总结,js获取屏幕高度 这篇文章洪有关javascript的各种高度,介绍了offsetWidth和clientWidth等等的意思,大家可以看看!!

function getScrollbarWidth() {
    var oP = document.createElement('p'),
        styles = {
            width: '100px',
            height: '100px',
            overflowY: 'scroll'
        }, i, scrollbarWidth;
    for (i in styles) oP.style[i] = styles[i];
    document.body.appendChild(oP);
    scrollbarWidth = oP.offsetWidth - oP.clientWidth;
    oP.remove();
    return scrollbarWidth;
}

使用

console.dir(getScrollbarWidth());

就可以输出滚动条的宽度了,大家可以试一试啊!

clientWidth-clientWidth方法

这个方法和上面的方法差不多!

function getScrollbarWidth() {
    var oP = document.createElement('p'),
        styles = {
            width: '100px',
            height: '100px'
        }, i, clientWidth1, clientWidth2, scrollbarWidth;
    for (i in styles) oP.style[i] = styles[i];
    document.body.appendChild(oP);
    clientWidth1 = oP.clientWidth;
    oP.style.overflowY = 'scroll';
    clientWidth2 = oP.clientWidth;
    scrollbarWidth = clientWidth1 - clientWidth2;
    oP.remove();
    return scrollbarWidth;
}

使用方法一样!

console.dir(getScrollbarWidth());

只是介绍了一个计算滚动条的方法,大家在用到的时候可以参考一下,希望对各位小主有帮助!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晴天暖宝宝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值