JavaScript 获取浏览器滚动条宽度的实用方法

作者:白露时间:2026-10-26 15:52:38浏览:544

本文介绍了一种通过创建隐藏嵌套节点来计算浏览器滚动条宽度的JavaScript方法。利用外层容器的offsetWidth与clientWidth之差获取数值,并通过设置position:absolute和visibility:hidden避免页面抖动。代码包含完整的节点创建、样式设置及清理逻辑,适用于需要精确控制布局的场景。

JavaScript 获取浏览器滚动条宽度的实用方法

此方法实现简单,仅用于记录相关技术细节。



核心思路是创建一个嵌套的DOM节点,强制外层容器出现滚动条,随后通过计算offsetWidth与clientWidth的差值即可得到滚动条的宽度。为防止该操作导致页面布局发生抖动,建议将外层元素设置为position:absolute并配合visibility:hidden属性进行隐藏。



具体参考实现如下:


代码示例:

 
function getScrollWith(){
var wrap = setAttributes(document.createElement('div'),{
style : {
width : '200px',
height: '200px',
overflow: 'auto',
position:'absolute',
visibility:'hidden'
} 
}) 
var inner = setAttributes(document.createElement('div'),{
style : {
width : '100px',
height: '2000px'
} 
}) 
document.body.appendChild(wrap);
wrap.appendChild(inner);
var w = wrap.offsetWidth - wrap.clientWidth;
document.body.removeChild(wrap);
wrap = null;
inner = null;
return w;
} 
function setAttributes(elem,opts){
for(var key in opts){
if(typeof opts[key] == 'string'){
elem[key] = opts[key];
}else{
if(!elem[key]){
elem[key] = {};
} 
setAttributes(elem[key],opts[key]);
} 
} 
return elem;
} 
作者最新文章