我对媒体查询非常熟悉,但我遇到了严重的问题......!使用适用于 Android 的最新版 Chrome (26.0.1410.58) 我发现它会报告与 DIP 中的视口和设备相关的所有尺寸!
这对我来说似乎完全错误,因为在 CSS 中逻辑上没有 DIP,只有 CSS 像素!
我使用我的三星 Galaxy S (I9000) 进行测试。这款手机的屏幕尺寸为 480 x 800!Chrome 报告 window.screen.width 为 320,window.devicePixelRatio 为 1.5!另一方面,Android(4.2.2)浏览器将屏幕尺寸(正确)报告为 480 x 800 和相同的 devicePixelRatio!
因此,即使在涉及媒体查询时,Chrome 也会使用这些(DIP)值,这会使任何与宽度/高度相关的媒体查询都无法使用,因为您没有机会获得真实的(以 CSS 像素为单位的)屏幕尺寸!
即使是使用 'min|max-device-width|height' 的媒体查询也会响应这些 (DIP) 值,毫无疑问,这些值至少不是它们的用途!
因此,一旦设备像素比大于 1.0,事情就会“出错”,因为获得“真实”值的唯一机会是将报告的值与 devicePixelRatio 相乘(这不能用 CSS 完成)。
让我想知道的是,最新的原生 Android 浏览器,也是基于 Webkit 引擎的,恕我直言,它是否正确。
所以我的问题是:
- 任何人都可以确认 Chrome 的行为吗?
- 这是故意的还是错误的?
- 为什么 Chrome 和 Android 浏览器的行为不同?
- 任何可能的解决方案或解决方法来克服这个问题?
以下是用于快速在线测试的两个附加链接:
http :
//responsejs.com/labs/dimensions/ http://cssmediaqueries.com/overview.html
以下文章可能也很有趣:
Viewport target-densitydpi support is being deprecated
所以让我们希望对新的@viewport 规则的支持会尽快到来......!
提前谢谢了,
冈瑟