div滚动条宽度

G-M*_*Man 6 javascript jquery

有没有一种简单的方法来使用javascript/jquery获取滚动条的宽度?我需要获得溢出的div的宽度+滚动条的宽度.

谢谢

oez*_*ezi 12

如果你正在使用jquery,试试这个:

function getScrollbarWidth() 
{
    var div = $('<div style="width:50px;height:50px;overflow:hidden;position:absolute;top:-200px;left:-200px;"><div style="height:100px;"></div></div>'); 
    $('body').append(div); 
    var w1 = $('div', div).innerWidth(); 
    div.css('overflow-y', 'auto'); 
    var w2 = $('div', div).innerWidth(); 
    $(div).remove(); 
    return (w1 - w2);
}
Run Code Online (Sandbox Code Playgroud)

我在我正在研究的项目中使用它,它就像一个魅力.它获得滚动条宽度:

  1. 向主体添加带有溢出内容的div(在不可见区域,-200px到顶部/左侧)
  2. 设置溢出到 hidden
  3. 得到宽度
  4. 设置溢出到auto(获取滚动条)
  5. 得到宽度
  6. 减去两个宽度以获得滚动条的宽度

所以你需要做的是获得你的div($('#mydiv').width())的宽度并添加滚动条宽度:

var completewidth = $('#mydiv').width() + getScrollbarWidth();
Run Code Online (Sandbox Code Playgroud)