iPhone X / 8/8 Plus CSS媒体查询


Answers:


150

iPhone X

@media only screen 
    and (device-width : 375px) 
    and (device-height : 812px) 
    and (-webkit-device-pixel-ratio : 3) { }

iPhone 8

@media only screen 
    and (device-width : 375px) 
    and (device-height : 667px) 
    and (-webkit-device-pixel-ratio : 2) { }

iPhone 8 Plus

@media only screen 
    and (device-width : 414px) 
    and (device-height : 736px) 
    and (-webkit-device-pixel-ratio : 3) { }


iPhone 6 + / 6s + / 7 + / 8 +具有相同的尺寸,而iPhone 7/8也具有相同的尺寸。


寻找特定方向?

肖像

添加以下规则:

    and (orientation : portrait) 

景观

添加以下规则:

    and (orientation : landscape) 



参考文献:


1
我的装有iOS 12的iphone 8+受到iPhone X查询的
攻击

viewportsizes.com/mine报告iPhone 8为320 x 450 Mozilla/5.0 (iPhone; CPU iPhone OS 12_0_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1
adrhc

iPhone 8 Plus媒体查询不适用于Chrome至少。
塔拉·梅

79

以下是一些针对iphone的媒体查询。这是参考链接https://www.paintcodeapp.com/news/ultimate-guide-to-iphone-resolutions

        /* iphone 3 */
        @media only screen and (min-device-width: 320px) and (max-device-height: 480px) and (-webkit-device-pixel-ratio: 1) { }

        /* iphone 4 */
        @media only screen and (min-device-width: 320px) and (max-device-height: 480px) and (-webkit-device-pixel-ratio: 2) { }

        /* iphone 5 */
        @media only screen and (min-device-width: 320px) and (max-device-height: 568px) and (-webkit-device-pixel-ratio: 2) { }

        /* iphone 6, 6s, 7, 8 */
        @media only screen and (min-device-width: 375px) and (max-device-height: 667px) and (-webkit-device-pixel-ratio: 2) { }

        /* iphone 6+, 6s+, 7+, 8+ */
        @media only screen and (min-device-width: 414px) and (max-device-height: 736px) and (-webkit-device-pixel-ratio: 3) { }

        /* iphone X , XS, 11 Pro */
        @media only screen and (min-device-width: 375px) and (max-device-height: 812px) and (-webkit-device-pixel-ratio: 3) { }

        /* iphone XR, 11 */
        @media only screen and (min-device-width : 414px) and (max-device-height : 896px) and (-webkit-device-pixel-ratio : 2) { }

       /* iphone XS Max, 11 Pro Max */
        @media only screen and (min-device-width : 414px) and (max-device-height : 896px) and (-webkit-device-pixel-ratio : 3) { }


您应该添加参考,例如:如果复制了其他SO答案的链接。

6、6、7和8之间没有区别吗?还是我没有看到?
佩里

@Perry,是的,你是对的。我编辑了答案。谢谢。
Yash Vekaria

我的装有iOS 12的iphone 8+受到iPhone X查询的
攻击

1
@GlennG我也已经更新了我的答案;)
Yash Vekaria 18/12/11

18

我注意到,这里的答案是使用:device-widthdevice-heightmin-device-widthmin-device-heightmax-device-widthmax-device-height

由于它们已被弃用,请不要使用它们。请参阅MDN以获取参考。而是使用常规的min-widthmax-width依此类推。为了进一步保证,您可以将最小值和最大值设置为相同的px值。例如:

iPhone X

@media only screen 
    and (width : 375px) 
    and (height : 635px)
    and (orientation : portrait)  
    and (-webkit-device-pixel-ratio : 3) { }

您可能还会注意到,我使用的是635px的高度。自己尝试,窗口高度实际上是635px。运行适用于iPhone X的iOS模拟器,并在Safari Web检查器中执行window.innerHeight。以下是有关此主题的一些有用链接:


这是唯一有效的方法,上述所有其他方法,甚至CSS技巧都是错误的,使用Yash Vakeria或Josh这样的方法,但它们也会在Iphone 6-7-8上被调用。但是!不要使用812px而不是提到的635px,Chrome检查器工具没有像Sam提到的那样捕获它。–
Renegade_Mtl

1

似乎使用env()为iPhone X / 8添加填充的最准确(且无缝)的方法...

padding: env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);

这是描述此内容的链接:

https://css-tricks.com/the-notch-and-css/


Wasif,您好,请尝试在代码中加上``,以获得更好的格式。
艾伦·斯卡帕

不幸的是,这也将在iPhone 6上应用填充,至少在模拟器中是如此。那是不希望的。
emil.c

1

如果您的页面meta[@name="viewport"]在其DOM中缺少元素,则可以使用以下内容来检测移动设备:

@media only screen and (width: 980px), (hover: none) { … }

如果要避免像所有移动浏览器一样将视口设置为980px的台式机使用假阳性,则device-width还可以在组合中添加一个测试:

@media only screen and (max-device-width: 800px) and (width: 980px), (hover: none) { … }

根据https://developer.mozilla.org/zh-CN/docs/Web/CSS/Media_Queries/Using_media_queries中的列表,新hover属性似乎是检测您是否拥有移动设备的最后一种新方法那确实不合适hover; 它仅在2018年随Firefox 64(2018)引入,尽管自2016年以来受Android Chrome 50(2016)甚至自2014年以来受Chrome 38(2014)的支持:

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.