CSS媒体查询和Firefox的滚动条宽度[重复]

Posted

技术标签:

【中文标题】CSS媒体查询和Firefox的滚动条宽度[重复]【英文标题】:CSS Media Queries and Firefox's Scrollbar Width [duplicate] 【发布时间】:2012-07-05 03:30:56 【问题描述】:

可能重复:issue with CSS media queries(scrollbar)

因此,Firefox 在其窗口宽度计算中包含了滚动条宽度,而 Webkit 则没有。这会导致浏览器之间的不一致。

现在,我知道从技术上讲,Firefox 遵循规范,将滚动条计算为窗口宽度的一部分,但这对我来说似乎真的违反直觉。毕竟,移动设备没有滚动条,滚动条宽度因浏览器而异/操作系统因操作系统而异。

我可以做些什么来阻止 Firefox 包含滚动条宽度?也许一个 jQuery 可以让我的媒体查询在浏览器中正确触发?

谢谢。

【问题讨论】:

【参考方案1】:

如果您只是使用媒体查询,那么侧边栏的偏移量不会在浏览器之间产生任何差异。

但是,如果您尝试将 jQuery 与媒体查询一起使用,您可能会遇到一些小问题,因为 jQuery 中返回的宽度是一致的,然后会显示偏移量。

要解决此问题,您只需计算 Firefox 浏览器中侧边栏的偏移量,然后从您想要同步的任何点减去该偏移量。即

var scrollBarWidth = 0;
if ($.browser.mozilla)
  scrollBarWidth = window.innerWidth - jQuery("body").width();

然后在您指定同步时...

if ($(window).width() < mediaQueryWidth - scrollBarWidth) 
  //act to do along with the media query

希望对你有帮助

【讨论】:

我想提一下,它确实会产生影响,因为如果你试图隐藏 400px - 768px 范围内的元素,它实际上将无法工作,直到你达到 385px - 753px 范围。如果您将任何宽度百分比基于最大宽度 768,那么 15px 也会失败。所以我会说它有所作为。

以上是关于CSS媒体查询和Firefox的滚动条宽度[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Firefox和IE滚动条的定制设计[重复]

CSS媒体查询和选择器[重复]

为啥我的简单媒体查询在模拟手机时会产生滚动条[重复]

按div宽度或高度的CSS媒体查询[重复]

最大宽度 767px 媒体查询 - 样式仅在 766px 或以下呈现(仅影响 firefox)

如何修复 Firefox 扩展弹出窗口中显示的滚动条