InnerWidth $(window).width()与移动调试时的实际宽度不匹配

时间:2016-09-27 17:46:16

标签: javascript jquery html css html5

我正在使用Chrome开发移动网站。在这个网站上,我根据屏幕的宽度做了很多。我遇到了一个问题,当我尝试通过

检索宽度时
window.innerWidth 

$(window).width()

与我在调试器中看到的实际宽度略有不同

例如我删除了所有css和内容运行此代码

<html style-"width: 100vw"> <!-- 100% has the save effect -->
<head>
</head>
<body id="body" style-"width: 100vw">
</body>
</html>

innerWidth属性为375(模拟iphone6)但实际宽度为375.33

这可能看起来像是一个很小的区别,但是我有一个应用程序的侧滚动部分,经过几次滚动(按设备宽度),非常明显的是,对齐关闭了几个像素,每次滚动都会变得更糟。我只能将此归因于我一次滚动375px的事实,但我需要滚动到375.33px(当我手动考虑其正常工作的差异时)

更糟糕的是,我在不同的机器上尝试了完全相同的代码并且测量结果是正确的。

我在这里摸不着头脑,感谢任何帮助

1 个答案:

答案 0 :(得分:2)

window.innerWidth用于查找

  

浏览器窗口视口的宽度(以像素为单位),包括(如果已渲染)垂直滚动条。

Source

<小时/> $(window).width()是一种

的方法
  

//返回浏览器视口的宽度

Source

<小时/> 后者不包括滚动条的宽度作为视口宽度的一部分(我在chrome的开发工具中使用了此页面并得到window.innerWidth = 1920$(window).width() = 1899,差异为21px滚动条)。我的猜测是,由于某种原因,移动网站上的滚动条会额外0.33px。我会检查你展示/样式化它的方式,因为这可能会增加宽度并导致0.33px的差异。希望这有点帮助,如果你可以发布任何对调试更有帮助的代码。