【问题标题】:Making sense of CSS media query results理解 CSS 媒体查询结果
【发布时间】:2018-11-22 20:24:30
【问题描述】:

我正在尝试了解仅移动页面的 CSS 媒体查询。我的最终目标是让我的页面上的字体大小在物理单位(英寸/厘米)中大致相同,而不管 decice 物理大小和分辨率如何。但是我看到媒体查询报告的内容与设备规格无关。

我正在测试 HTC One M7,即 1080x1920467dpi - 制造商规格。

媒体查询报告的准确数字是:

width (as reported by min-width/max-width): 1080px

resolution (as reported by min-resolution/max-resolution): 288dpi or 3.0dppx

首先,报告的宽度像素不应该是逻辑像素,而不是物理像素吗?我的意思是iPhone3GSiPhone4 都报告了width320px,尽管后者实际上是640 个物理像素。见How to target iPhone 3GS AND iPhone 4 in one media query? 当匹配给定查询时,我应该如何知道“pixel”的浏览器是什么意思?

其次,报告的288dpi与实际设备467dpi无关。这个3dppx是怎么计算出来的?

【问题讨论】:

    标签: css mobile media-queries pixels


    【解决方案1】:

    这是一个有趣的问题。我熟悉媒体查询在 iOS 设备上的工作方式,但对 Android 设备则不太熟悉。无论如何,我会尝试一下。

    让我们从dppx 开始,您可能知道它是衡量每个像素中有多少物理点(让我们使用您的术语“物理像素”和“逻辑像素”)。 3dppx 表示屏幕的每个逻辑像素都由一个 3x3 的物理像素网格组成。要使用 iOS 术语,您的显示器具有@3x 分辨率,如 iPhone 6 Plus。

    您可以在此处查看各种设备dppx 值的列表:

    http://bjango.com/articles/min-device-pixel-ratio/

    (该网站指的是-webkit-min-device-pixel-ratio,早于dppx,但我认为意思完全一样。)

    如果您知道设备的物理宽度和dppx,您可以使用以下公式计算其逻辑宽度,您可以在媒体查询中使用:

    device width / dppx = logical width
    

    对于您的设备,这应该是:

    1080 / 3 = 360
    

    因此,我希望以下媒体查询以纵向模式定位您的设备:

    @media only screen and (max-width: 360px) { }
    

    至于288dpi1dppx 设备有96dpi,3 x 96 = 288。我不确定制造商的467dpi 来自哪里,但它似乎与写作无关媒体查询。

    【讨论】:

    • 感谢您的回答!我理解 iOS 使用逻辑像素背后的原因,但这里似乎 Android 根本不使用这种方案,而是坚持使用物理像素。事实上,这款手机满足以下查询:@media (min-width: 1079px) and (max-width: 1081px) 正如你所看到的,这与你提到的 min-width: 360px 相差甚远。此外,当我在“px”中设置
      的大小时,它以物理像素显示,而不是逻辑像素,尽管报告的密度为 3dppx。
    • 厂商列出的 469dpi 没有错,可以很容易地计算为 1080pixels / 2.3 英寸宽的屏幕。可以在以下位置找到规格:gsmarena.com/htc_one-5313.php min-resolution 实际上与 -webkit-min-device-pixel-ratio 相同,该手机也报告为 3.0。但似乎有一个根本区别,Android 总是表示“px”的物理像素,而 iOS 表示逻辑。
    • 我假设您已将视口元标记设置为将页面缩放到设备宽度?例如
    • 是的,这里是:
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签