iPhone XR / XS / XS Max CSS 媒体查询

Posted

技术标签:

【中文标题】iPhone XR / XS / XS Max CSS 媒体查询【英文标题】:iPhone XR / XS / XS Max CSS media queries 【发布时间】:2019-02-18 15:09:49 【问题描述】:

用于定位 Apple 2018 年设备的正确 CSS 媒体查询有哪些:iPhone XR/XS/XS Max?

【问题讨论】:

【参考方案1】:

iPhone XR

/* 1792x828px at 326ppi */
@media only screen 
    and (device-width : 414px) 
    and (device-height : 896px) 
    and (-webkit-device-pixel-ratio : 2)  

iPhone XS

/* 2436x1125px at 458ppi */
@media only screen 
    and (device-width : 375px) 
    and (device-height : 812px) 
    and (-webkit-device-pixel-ratio : 3)  

iPhone XS Max

/* 2688x1242px at 458ppi */
@media only screen 
    and (device-width : 414px) 
    and (device-height : 896px) 
    and (-webkit-device-pixel-ratio : 3)  


寻找特定的方向?

肖像

添加以下规则:

    and (orientation : portrait) 

风景

添加以下规则:

    and (orientation : landscape) 

参考资料:

https://developer.apple.com/design/human-interface-guidelines/ios/visual-design/adaptivity-and-layout/ https://www.paintcodeapp.com/news/ultimate-guide-to-iphone-resolutions

【讨论】:

其他安卓设备也受到上述风格的影响 许多年前,我创建了一个 sn-p,我在 Gist/Github† 上分享了如何使用这种技术和 SCSS 来定位这些设备。我现在正在学习这种device-width 技术已被弃用。你们现在都用什么代替? †gist.github.com/frankstallone/cee114d0b6935717696e6506552bc75a 我希望所有 SO 的答案都是直截了当的,谢谢! 我不知道当前最新的浏览器,但当媒体查询开始时,(max/min)-device-width 表示设备的实际分辨率,(max/min)-width 表示 CSS 像素。因此,如果屏幕分辨率宽度为 720 像素且屏幕像素密度为 2,则 CSS 像素为 360(一半)。 device-width 现在也被弃用了developer.mozilla.org/en-US/docs/Web/CSS/@media/device-width【参考方案2】:

以上是正确的,但设计师需要以真实的屏幕尺寸为目标,以避免缩放、裁剪等。例如默认横向屏幕尺寸实际上是 808 像素的 XR。

所以这可能更合适:@media (max-width: 808px) ...

这实际上会覆盖这个查询:@media (max-width: 896px) ...

问题是苹果的安全区域插图。通过添加以下内容可以克服这些问题并获得真正的 896px 边到边宽度;

元标记:viewport-fit=cover

CSS:body padding: env(safe-area-inset, 0px);

可以更改 0px 大小的填充,或添加左右上下变量,或适应纵向/横向。但大多数人的设计中已经有足够的填充。

参考:https://webkit.org/blog/7929/designing-websites-for-iphone-x/

未在其他设备上进行测试,但似乎它们都采用相同的方法。

【讨论】:

【参考方案3】:

来自 Nathan 的信息很棒。感谢每个浏览器的检查器似乎没有的断点。我遇到的唯一挑战是我之前的所有媒体查询都使用了类似

/* Landscape */
@media only screen 
    and (min-device-width : 414px) 
    and (max-device-height : 896px) 
    and (-webkit-device-pixel-ratio : 3)
    and (orientation : landscape)  

而上面的解决方案只使用

and (device-width : 414px)

这可能会导致您可能已经使用最小设备和最大设备的查询出现问题。

非常感谢这些尺寸和 DPR!

【讨论】:

@DickKirkland 提供的答案是正确的,因为您必须将minmax 添加到device-widthdevice-height 我不知道当前最新的浏览器,但当媒体查询开始时,(max/min)-device-width 表示设备的实际分辨率,(max/min)-width 表示 CSS 像素。因此,如果屏幕分辨率宽度为 720 像素且屏幕像素密度为 2,则 CSS 像素为 360(一半)。使用最大/最小宽度比考虑所有像素密度要容易得多。设备宽度现在也被弃用了developer.mozilla.org/en-US/docs/Web/CSS/@media/device-width

以上是关于iPhone XR / XS / XS Max CSS 媒体查询的主要内容,如果未能解决你的问题,请参考以下文章

为啥 iPhone XR、XS 和 XS Max 没有将环境图像应用到 ARKit 中的场景?

为啥 iPhone XR/Xs Max 不遵守比率约束?

物理尺寸Iphone XS Max和Iphone XR屏幕[重复]

为什么iPhone XR,XS和XS Max不会将环境图像应用到ARKit中的场景?

iPhone XR/XS:AVAssetExportSession 状态失败并出现错误

支持Xcode10和适配iPhone XS MaxiPhone XR