据我所知,它是“抽象”分辨率与设备物理分辨率之间的比率。所以我测试了一下(在HTC Desire上),物理分辨率是480x800,登出比例是1.5。我添加了一些元素,但它仍然需要精确的480px宽度来填充视口,而我天真的认为它需要“320px”?
来自http://www.quirksmode.org/blog/archives/2012/07/more_about_devi.html,作者讨论了移动设备上devicePixelRatio的差异:
在 iOS Retina 设备上,screen.width 给出以深度为单位的宽度。因此,视网膜和非视网膜 iPad 在纵向模式下的报告均为 768。在这三种 Android 设备上,screen.width 给出了以物理像素为单位的宽度;分别为 480、720 和 800。设备上的所有浏览器都使用相同的值。(想象一下,如果同一设备上的某些浏览器使用倾角和其他物理像素!)
这导致作者得出以下结论:
- 在 iOS 设备上,将 devicePixelRatio 乘以 screen.width 即可获得物理像素数。
- 在 Android 和 Windows Phone 设备上,将 screen.width 除以 devicePixelRatio 即可获得倾角计数。
对于您的情况来说,重要的是屏幕宽度,简单明了。DIP 的计算是由设备来处理的,而不是作为开发人员的您。如果设备想要补偿不同的像素比率,它将为您提供 DIP 中的宽度并给出比率。如果认为页面应该以原始未修改的像素分辨率显示,它将为您提供该宽度。这篇文章的作者还得出了以下我觉得很有趣的结论:
苹果添加像素是因为它想让显示更清晰、更平滑,而安卓供应商添加像素是为了在屏幕上塞满更多东西。
无论如何,请使用浏览器为您提供的宽度,并将其留给设备进行补偿。