【问题标题】:How to detect if scrollbar takes up space in Chrome for OS X?如何检测滚动条是否在 Chrome for OS X 中占用空间?
【发布时间】:2015-10-14 16:47:23
【问题描述】:

我有一些代码假定 OS X 的垂直滚动条宽度为 15px,并相应地进行一些布局。

这适用于 Mac。但是,在 Macbook 上,Chrome 的滚动条似乎并没有占用任何额外的空间。它显示为页面内容的叠加层。这会导致布局有点失真。

有什么方法可以检测滚动条是否为 Apple 台式机/笔记本电脑上的 Chrome 保留了空间?

【问题讨论】:

  • 也许这可以帮助你:davidwalsh.name/detect-scrollbar-width
  • @Unlockedluca:您好,感谢您的回答。这是一个很好的解决方案,我研究了它。但是,我不确定是否允许我修改客户的页面。我在别人的网站上布置我的 iFrame。所以我正在寻找更直接的解决方案。
  • @Unlockedluca:我找到了一种使您的链接解决方案起作用的方法。如果您作为答案发布,我可能会接受。

标签: html css macos google-chrome


【解决方案1】:

您可以使用来自here:的代码

首先在样式表中定义一些样式指南:

/* way the hell off screen */
.scrollbar-measure {
    width: 100px;
    height: 100px;
    overflow: scroll;
    position: absolute;
    top: -9999px;
}

比在你的 javascript 中你开始这样:

// Create the measurement node
var scrollDiv = document.createElement("div");
scrollDiv.className = "scrollbar-measure";
document.body.appendChild(scrollDiv);

// Get the scrollbar width
var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;
console.warn(scrollbarWidth); // Mac:  15

// Delete the DIV 
document.body.removeChild(scrollDiv);

【讨论】:

  • 谢谢。值得注意的是,这对 IE 不起作用(令人震惊)。未正确返回 clientHeight。我通过在第一个宽度为 100% 的 div 中添加另一个 div 并减去两个 offsetWidths 来解决它
  • 6 个月后正在寻找解决方案,这就是票!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-23
  • 2010-10-07
  • 1970-01-01
  • 1970-01-01
  • 2010-10-15
  • 1970-01-01
相关资源
最近更新 更多