html - 冲突的媒体查询 iPhone X

标签 html css media-queries iphone-x

我有以下媒体查询。第一个是针对特定宽度以下的某些屏幕。第二个是专门针对 iPhone X 的。如果只有 iPhone X,是否可以覆盖第一个媒体查询?以下似乎不起作用

@media (max-width: 449px) {
    h1.question { padding: 20px 0px; }
}

@media only screen 
    and (device-width : 375px) 
    and (device-height : 812px) 
    and (-webkit-device-pixel-ratio : 3) { 
        h1.question { padding-top: 50px !important; }
}

最佳答案

我相信您正在寻找的是 -webkit-min-device-pixel-ratio

-webkit-device-pixel-ratio 特性被指定为一个值。这是一个范围功能,这意味着您还可以使用带前缀的 -webkit-min-device-pixel-ratio 和 -webkit-max-device-pixel-ratio 变体分别查询最小值和最大值。 ( source )

作为对此的测试,我设置了以下 fiddle ,它将输出 -webkit-min-device-pixel-ratio ( with credit to this )。还有下面的堆栈片段。

https://jsfiddle.net/3w5rq8pj/10/

我在几台设备上对此进行了测试,结果如下:

  • 实际 iPhone 7 Plus/结果 3
  • 配备 Retina 显示屏的 Macbook Pro/结果 3
  • 联想 Thinkpad(即)/结果 0
  • 通过配备 Retina 的 Macbook Pro 在 BrowserStack 上模拟 iPhone 6 Plus/结果 3
  • 通过 Lenovo Thinkpad 在 BrowserStack 上模拟 iPhone 6 Plus/结果 3

在所有这些情况下,Browserstack 模拟器都返回了正确的结果(老实说,这让我感到惊讶)。

我还重新运行了所有测试,但从 javascript 的查询中删除了 -min,并且每个测试用例都返回了 0。

function guess() {
  var ls, l=0, h=8192, c=parseInt((l+h)/2), i=20;
while (i > 0 && (c - l >1) && (h - c>1)) {
  i--; // Shouldn't take more than 13 guesses, but in case of bugs!
  if (window.matchMedia('(-webkit-min-device-pixel-ratio: ' + c + ')').matches) {
    l=c; ls=0;
  } else {
    h=c; ls=1;
  }
  c = parseInt((h+l)/2);
}
c -= ls;
document.getElementById("result").innerHTML = "min pixel ratio: " + c;
}

guess();
<div id="result"></div>

关于html - 冲突的媒体查询 iPhone X,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47121534/

相关文章:

html - CSS - 水平滚动菜单不滚动

html - 输入占位符行高问题

html - 在不使用 jquery 的情况下将固定 div 定位在另一个具有可变高度的固定 div 下面

html - 字间距在 safari 中不起作用

html - 用图像填充整个 div 并使整个 div 可以作为链接点击

javascript - 使用 javascript 或 jQuery 生成 CSS 媒体查询

CSS 媒体查询与背景图像宽度

javascript - Bootstrap 4 崩溃在一半停止然后打开时无法顺利工作

java - 如何更改 GWT 中 DecoratorPanel 的颜色?

html - 媒体查询有问题,没有任何反应