从div宽度获取滚动条宽度和减号

时间:2016-11-17 07:16:19

标签: javascript jquery html

我有以下代码,它获取滚动宽度并从div宽度减去它并且它工作正常,但问题是它不能在window.resize中工作,我如何让它在window.resize中工作?

这是JS代码

//get scrollbar width
function getScrollBarWidth () {
  var inner = document.createElement('p');
  inner.style.width = "100%";
  inner.style.height = "200px";
  var outer = document.createElement('div');
  outer.style.position = "absolute";
  outer.style.top = "0px";
  outer.style.left = "0px";
  outer.style.visibility = "hidden";
  outer.style.width = "200px";
  outer.style.height = "150px";
  outer.style.overflow = "hidden";
  outer.appendChild (inner);
  document.body.appendChild (outer);
  var w1 = inner.offsetWidth;
  outer.style.overflow = 'scroll';
  var w2 = inner.offsetWidth;
  if (w1 == w2) w2 = outer.clientWidth;
  document.body.removeChild (outer);
  return (w1 - w2);
 };
//header width minus scrollbar width
$("header").width($("header").width() - getScrollBarWidth() + "px"); 

2 个答案:

答案 0 :(得分:0)

我认为更好的解决方案是https://api.jquery.com/resize/

$( window ).resize(function() {
$("header").width($("header").width() - getScrollBarWidth() + "px");
});

编辑评论:尝试timeOut

$( window ).resize(function() {
setTimeout(funtion(){$("header").width($("header").width() - getScrollBarWidth() + "px");},300)
});

答案 1 :(得分:0)

将此声明放在包含“getScrollBarWidth”函数的脚本文件中的任何位置。

onresize = getScrollBarWidth;