【问题标题】:CSS @media queries for high-res displays not working高分辨率显示的 CSS @media 查询不起作用
【发布时间】:2012-09-20 22:05:35
【问题描述】:

我设置了一些 CSS 来检测客户端是否使用 Retina 或其他 HiDPI 显示器,并基于此为各种 divs 显示不同的 background-image。这是我的语法:

<!-- LoDPI and MedDPI displays -->
#div {
    opacity:0.4;
    position:absolute;
    top:0px;
    z-index:2;
    width:1600px;
    height:900px;
    animation-name:ring;
    animation-delay:0s;
    animation-duration:1500ms;
    animation-timing-function:cubic-bezier(0.225, 1.650, 0.000, 0.805);
    animation-fill-mode:forwards;
    background-image:url(/valid/path/to/regular/file);
}

<!-- For Retina and HiDPI displays -->
@media only screen and (min-device-pixel-ratio: 1.4) {
#div {
    background-image:url(/valid/link/to/HiDPI/file);
    background-position:center;
    background-size:contain;
    }
}

问题是,当我在我的 Retina MBP 上尝试这个时,它的像素比设置为 1.5(“就像 1920x1200 一样),显示的是普通分辨率图像而不是高分辨率图像。

【问题讨论】:

    标签: css media media-queries retina-display


    【解决方案1】:

    我遇到了同样的问题: min-device-pixel-ratio 似乎不被无前缀的 js 支持(前缀)!? min-device-pixel-ratio 不符合 W3C。

    当我将它与供应商前缀一起使用时,一切正常吗?!

    这对我来说很好(删除 cmets)

    @media (-webkit-min-device-pixel-ratio: 2), /*  Firefox16, Chrome, Safari, iOS, Android */
           (min--moz-device-pixel-ratio: 2),    /*  Older Firefox browsers (prior to Firefox16) */
           (-o-min-device-pixel-ratio: 2/1),    /*  Opera */
           (min-device-pixel-ratio: 2),         /*  not defined yet, http://www.w3.org/TR/css3-mediaqueries/ */
           (min-resolution: 2dppx),             /*  not yet, probably in future, see http://www.w3.org/TR/css3-mediaqueries/ */
           (min-resolution: 192dpi)             /*  works for non css3 browser */
           {
                /* your styles go here */
           }
    
    • Opera 值应为 1/1、3/2、2/1 等价于 1、1.5 和 2。
    • dpi 值应为 96、144、192,相当于 1、1.5 和 2。

    当使用 -webkit-text-size-adjust:none;从纵向模式切换到横向模式时,iPhone 上的字体大小不会爆炸 ;-)

    【讨论】:

      【解决方案2】:

      你没有把所有的花括号都合上。无论如何,为了获得更好的支持矩阵,请将您的媒体查询替换为

      @media only screen and (-moz-min-device-pixel-ratio: 1.5),
             only screen and (-o-min-device-pixel-ratio: 3/2),
             only screen and (-webkit-min-device-pixel-ratio: 1.5),
             only screen and (min-device-pixel-ratio: 1.5) {
               /*your rules*/
             }
      

      【讨论】:

      • 实际上,我应该提到我已经包含了 Prefix Free JS,并且我错过了最初问题中的结束 @media 括号。
      • 我不能确定这是否是一个错字。您是否也在使用 CSS cmets 而不是 HTML cmets?不过,我不熟悉不同的 Prefix Free 类 JS 变通办法在媒体查询方面的效果如何。
      • 到目前为止,它们工作得很好;我网站上的所有其他媒体查询都可以正常工作(大多数用于分辨率),并且使用相同的语法。
      • 其实,你知道W3C规范除了min-device-pixel-ratio之外,是否还包括max-device-pixel-ratio
      • 这是最小--moz-device-pixel-ratio。 developer.mozilla.org/en-US/docs/CSS/…
      猜你喜欢
      • 2012-08-17
      • 1970-01-01
      • 2013-05-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多