【问题标题】:CSS Media Queries on Nexus 7, display resolution not working in codeNexus 7 上的 CSS 媒体查询,显示分辨率在代码中不起作用
【发布时间】:2012-08-17 04:02:36
【问题描述】:

我正在使用 CSS 媒体查询来为不同尺寸的设备加载不同的模板。我创建了一个电子表格,列出了测试设备的显示分辨率和最常见的设备以得出尺寸截止值。我正在测试的设备之一是 Nexus 7,我发现它的显示分辨率为 1280 × 800。但是,当我在代码中使用这些值时,它不起作用。

**我不使用最大值或最小值的唯一原因是因为我试图找到确切的分辨率。如果我用相当大的东西替换 max-device-width ,它可以工作并且我已经完成了足够的测试以知道它可以与给定的各种最大值一起工作,但是为了正确完成我的代码以区分 3 个不同大小的设备类别,我必须确保创建正确的截止点。 CSS分辨率不同吗?感谢您提前提供的所有帮助!

@media only screen and (device-width:1280px) and (orientation:landscape) {
/*style --code removed for sack of space */
} 

@media only screen and (device-width:800px) and (orientation:portrait) {

/*style --code removed for sack of space */

}    

这是我的 html 文件中的视口代码

<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">

【问题讨论】:

  • 我知道有些设备的“宽度”和“方向”并不总是以一种有意义的方式配对。你试过定位@media only screen and (device-width:1280px) and (orientation:portrait) 吗?
  • 感谢您的回复。我通过反复试验发现 device-width 和 device-height 分别为 966px 和 909px。
  • 是的,它是一个高 DPI 设备,因此像素被缩放以保持可读性。在我的 nexus 7 上,我看到 962 像素 x 553 像素,隐藏了状态栏并启用了系统栏。

标签: android css media-queries


【解决方案1】:

使用以下视口代码:

<meta name="viewport" content="target-densitydpi=device-dpi, width=device-width" />

或者这个不允许缩放:

<meta name="viewport" content="target-densitydpi=device-dpi, width=device-width, initial-scale=1, maximum-scale=1,user-scalable=no" />

关于 Nexus 7 的奇怪之处在于(正如 jpgr 发布的那样)它不允许您使用它所拥有的 1280/800 空间(至少开箱即用)。尽管设置了缩放首选项,但它几乎就像在某种程度上放大了一样。

当我的图形看起来有点模糊时,我注意到了这个问题。我通过 javascript 测试了窗口大小,它发布的数字约为25%,低于预期。你会注意到我已经排除了缩放参数,因为它似乎在很大程度上忽略了它们。

真正的关键是使用target-densitydpi = device-dpi...这似乎非常正确。

肯定喜欢使用 Nexus 7 !!!

【讨论】:

  • 请注意 - 不幸的是,target-densitydpi=device-dpi 确实会与 4​​ 英寸 960px 屏幕混淆。您可以使用 javascript 检查设备并使用该标签动态更新视口内容,但这有点麻烦。
  • 我也遇到了同样的问题。不过我很困惑,这些视口设置能解决问题吗?
  • 上面的视口元代码允许在浏览器中使用已知的 1280x800 值(如设备所宣传的那样)。如 jpgr 所述,如果没有此视口代码,您将获得更接近 966 像素和 909 像素的屏幕尺寸。 Robbo 提到这可能会导致其他设备出现问题,我只对 Nexus 7 说话。像素不是 1:1 显示的,因此图形可能会变得有点模糊。请记住,对于媒体查询,您必须使用浏览器中实际显示的值,而不是设备上宣传的值。
  • 添加,Android 版 Chrome 不再支持 target-densitydpi
【解决方案2】:

CSS 像素和设备像素的屏幕尺寸存在差异。

对于 nexus 7,本机设备像素为 1280 x 800 像素。

但是,如果这是报告的媒体查询宽度,我们最终会触发传统桌面尺寸的响应式设计。

因此,在高像素密度显示之前,许多浏览器都会选择更接近于传统像素大小的 CSS 像素大小。几乎是 iPhone 1 - 3 像素大小。

设备像素比率报告(设备像素/CSS 像素)

例如800 / 600 = 1.3333

更令人困惑的是,这些比率有时会随操作系统版本而变化。例如,从 Jelly Bean 4.2 开始,我的 nexus 7 报告纵向宽度为 600px,低于 603。

这使得使用基于宽度的媒体查询来定位精确设备变得很困难。我建议您接受您正在针对大量设备宽度进行设计,并尝试创建一个响应式设计,以适应您选择支持的设备尺寸范围。

祝你好运:)

【讨论】:

    【解决方案3】:

    过于务实的答案,但您基本上可以使用 601x880 的屏幕尺寸来定位 Nexus 7。技术上不完整,但如果您尝试在媒体查询中使用断点,应该足以让您入门。

    【讨论】:

    • 使用:(min-device-width : 601px) 和 (max-device-width : 880px) 对我有用,谢谢!
    猜你喜欢
    • 2012-09-20
    • 2011-12-26
    • 2015-04-11
    • 1970-01-01
    • 1970-01-01
    • 2014-01-05
    • 1970-01-01
    • 2013-08-30
    • 2014-05-08
    相关资源
    最近更新 更多