Bootstrap

获取浏览器的默认滚动条宽度

function getBarWidth(){
    let outDiv = document.createElement("div");
    outDiv.style.width = "100px";
    outDiv.style.position = "absolute";
    outDiv.style.top = "-9999px";
    document.body.appendChild(outDiv);
    let widthnobar = outDiv.offsetWidth;

    outDiv.style.overflow = "scroll";

    let innerDiv = document.createElement("div");
    innerDiv.style.width = "100%";
    outDiv.appendChild(innerDiv);
    let widthbar = innerDiv.offsetWidth;
    
    document.body.removeChild(outDiv);

    return widthnobar - widthbar;
}

这是在element中实现自定义滚动条中,用于获取浏览器导航条宽度的原理。

理解:

        首先创建一个div,将他放在页面一个看不见的地方,通过绝对定位可以让它脱离文档流,不会弄乱自己的页面(虽然后面会移除)。获取 offsetWidth 包括内容、内边距、边框和滚动条。在这里获取到的就是内容宽度,我们设置的100;

        给外边框设置 overflow = scroll 后 会存在滚动条。获取子级的宽度。

        通过两次获取的宽度相减后得到的就是浏览器默认的滚动条宽度。

      

      这个可以使用在自定义滚动条中,毕竟默认的滚动条不好看。

 

;