如何定位 dppx 大于 2 但小于 3 的设备 [重复]

Posted

技术标签:

【中文标题】如何定位 dppx 大于 2 但小于 3 的设备 [重复]【英文标题】:How to target a device with a dppx larger than 2 but smaller than 3 [duplicate] 【发布时间】:2016-05-14 08:25:55 【问题描述】:

我正在尝试为像素比为 2dppx 的设备应用一些 CSS 规则,而为像素比为 3dppx 或更高的设备应用一些其他规则。

由于我只针对小型设备(手机和平板电脑,但没有视网膜笔记本电脑或电视),我有一个围绕其他两个的最大宽度媒体查询。 (已编辑:删除此媒体查询并不能解决问题)。

@media only screen and (max-width: 40em) 

    @media screen and (min-device-pixel-ratio: 2dppx) and (max-device-pixel-ratio: 2.9dppx)
        $base-font-size: 150%;
    
    @media screen and (min-device-pixel-ratio: 3dppx) 
        $base-font-size: 180%;
    

但是当我在我的 iPhone 5s(使用 2dppx)上运行网络时,我可以看到 base-font-size 等于 180%,所以它似乎采用了错误的样式。为什么会这样?

【问题讨论】:

【参考方案1】:

我在这里可能完全错了,但我不认为你应该使用dppxmin-device-pixel-ratio,你应该写成:

@media only screen and (max-width: 40em) 

    @media screen and (min-device-pixel-ratio: 2) and (max-device-pixel-ratio: 2.9)
        $base-font-size: 150%;
    
    @media screen and (min-device-pixel-ratio: 3) 
        $base-font-size: 180%;
    

或者,更明确地说,尝试使用resolution 属性:

@media only screen and (max-width: 40em) 

    @media screen and (min-resolution: 2dppx) and (max-resolution: 2.9dppx)
        $base-font-size: 150%;
    
    @media screen and (min-resolution: 3dppx) 
        $base-font-size: 180%;
    

编辑:您可能需要附加供应商前缀,如下所示:

@media only screen and (max-width: 40em) 

    @media screen and (min-resolution: 2dppx) and (max-resolution: 2.9dppx), screen and (-webkit-min-resolution: 2dppx) and (-webkit-max-resolution: 2.9dppx)
        $base-font-size: 150%;
    
    @media screen and (min-resolution: 3dppx), screen and (-webkit-min-resolution: 3dppx) 
        $base-font-size: 180%;
    

【讨论】:

根据MDN 看来你是对的!但是我修改了我的代码,但没有任何改变,事实上,根据 Chrome 模拟器,每台设备无论其分辨率如何都采用最后的样式并将 $base-font-size 设置为 180%; 出于好奇,当您将包装媒体查询(最大宽度:40em)完全取出并仅使用它们自己的分辨率查询时会发生什么?结果一样吗? @ithil 是的,结果相同,我将编辑问题以反映这一点 @ithil 供应商前缀怎么样?尝试使用-webkit-min-resolution【参考方案2】:

好吧,看来问题可能不在于媒体查询本身,而在于无法在媒体查询中更新 Sass 变量,正如其他 *** question 中所述。 p>

从接受的答案中,我引用“这根本不可能。因为触发@media screen and (max-width: 1170px) 发生在客户端。”。

所以我会尝试重写我的代码以避免媒体查询中的变量发生变化。

【讨论】:

啊,我也在那里学到了一些新东西!谢谢。 如果您的问题与另一个问题重复,则应将其作为重复问题关闭。发布指向另一个答案的答案是非常不合适的。【参考方案3】:

不要使用min-device-pixel-ratio,而是尝试使用min-resolution

@media only screen and (max-width: 40em) 

    @media screen and (min-resolution: 2dppx) and (max-resolution: 2.9dppx)
        $base-font-size: 150%;
    
    @media screen and (min-resolution: 3dppx) 
        $base-font-size: 180%;
    

在此处查看解决方案部分:https://developer.mozilla.org/en-US/docs/Web/CSS/Media_Queries/Using_media_queries

【讨论】:

感谢 Jordan,请看一下 cmets 给@David-Wilkinson 的回答 @ithil 只是为了好玩,您可以尝试使用 -webkit-min-device-pixel-ratio 看看它是否有效?

以上是关于如何定位 dppx 大于 2 但小于 3 的设备 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

响应式设计

求一句sql语句:大于或者小于某个值,但只取紧挨着的6项。

sql表中如何表示大于0小于100?

PLSQL如何将结果小于0的数据用0代替

matlab如何统计矩阵中大于或小于某数的元素个数?

“大于”有效但“小于”无效?