2013-01-11 33 views
3

假设我已经正确地推断了这个问题,似乎CSS min-screen宽度补偿了一个滚动条(如预期的那样),而JS似乎没有做同样:(计算窗口宽度,包括滚动条 - CSS媒体查询与JS

我使用的是Firefox在Mac OSX。我不知道这是否是针对特定浏览器,但我不知道是否有一个通用的解决这个问题。

我做a JS fiddle to demonstrate the problem。在我的浏览器中,CSS和我的JS计算的宽度之间有15px的差异。

任何人en之前反击过?

+0

我发现了一个类似的问题,并且有人建议使用'$('body')。innerWidth()',它似乎适用于它们。我认为这看起来很有希望,但在我看来,它似乎在'$(window).width()'产生了相同的结果。不知道有什么区别。 – norsewulf

回答

1

我似乎已经找到了我的问题的答案,但我不确定这是否是计算正确宽度的最有效方法。

我们的想法是,得到body元件overflow:hidden;,然后运行以计算窗口宽度,然后取出overflow:hidden;样式的功能。

像这样:

function minScreen480(){ 

    document.body.style.overflow = "hidden"; 
     if ($(window).width() >= 480) { 
      // Do stuff 
     }else{ 
      // Do stuff 
     } 
    document.body.style.overflow = ""; 
} 

$(window).resize(function(){ 
    minScreen480(); 
}).trigger('resize'); 

似乎工作。这写得更好吗?