iPhone X / 8 / 8 Plus CSS media queries

后端 未结 5 2092
猫巷女王i
猫巷女王i 2020-12-02 05:02

What are the CSS media queries corresponding to Apple\'s new devices ? I need to set the body\'s background-color to change the X\'s safe area back

相关标签:
5条回答
  • 2020-12-02 05:13

    Here are some of the following media queries for iPhones. Here is the ref link 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, 12 Mini */
            @media only screen and (min-device-width: 375px) and (max-device-height: 812px) and (-webkit-device-pixel-ratio: 3) { }
    
            /* iphone 12, 12 Pro */
            @media only screen and (min-device-width: 390px) and (max-device-height: 844px) 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) { }
    
            /* iphone 12 Pro Max */
            @media only screen and (min-device-width : 428px) and (max-device-height : 926px) and (-webkit-device-pixel-ratio : 3) { }
    
    
    0 讨论(0)
  • 2020-12-02 05:16

    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+ share the same sizes, while the iPhone 7/8 also do.


    Looking for a specific orientation ?

    Portrait

    Add the following rule:

        and (orientation : portrait) 
    

    Landscape

    Add the following rule:

        and (orientation : landscape) 
    



    References:

    • https://webkit.org/blog/7929/designing-websites-for-iphone-x/
    • https://developer.apple.com/ios/human-interface-guidelines/visual-design/adaptivity-and-layout/
    • https://developer.apple.com/ios/human-interface-guidelines/overview/iphone-x/
    • https://mydevice.io/devices/
    • http://viewportsizes.com/mine/
    0 讨论(0)
  • 2020-12-02 05:16

    It seems that the most accurate (and seamless) method of adding the padding for iPhone X/8 using env()...

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

    Here's a link describing this:

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

    0 讨论(0)
  • 2020-12-02 05:17

    If your page is missing meta[@name="viewport"] element within its DOM, then the following could be used to detect a mobile device:

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

    If you want to avoid false-positives with desktops that just magically have their viewport set to 980px like all the mobile browsers do, then a device-width test could also be added into the mix:

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

    Per the list at https://developer.mozilla.org/en-US/docs/Web/CSS/Media_Queries/Using_media_queries, the new hover property would appear to be the final new way to detect that you've got yourself a mobile device that doesn't really do proper hover; it's only been introduced in 2018 with Firefox 64 (2018), although it's been supported since 2016 with Android Chrome 50 (2016), or even since 2014 with Chrome 38 (2014):

    • https://developer.mozilla.org/en-US/docs/Web/CSS/@media/hover
    0 讨论(0)
  • 2020-12-02 05:28

    I noticed that the answers here are using: device-width, device-height, min-device-width, min-device-height, max-device-width, max-device-height.

    Please refrain from using them since they are deprecated. see MDN for reference. Instead use the regular min-width, max-width and so on. For extra assurance, you can set the min and max to the same px amount. For example:

    iPhone X

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

    You may also notice that I am using 635px for height. Try it yourself the window height is actually 635px. run iOS simulator for iPhone X and in Safari Web inspector do window.innerHeight. Here are a few useful links on this subject:

    • https://medium.com/@hacknicity/how-ios-apps-adapt-to-the-iphone-x-screen-size-a00bd109bbb9
    • https://developer.apple.com/design/human-interface-guidelines/ios/visual-design/adaptivity-and-layout/
    • https://ivomynttinen.com/blog/ios-design-guidelines
    • https://www.paintcodeapp.com/news/ultimate-guide-to-iphone-resolutions
    0 讨论(0)
提交回复
热议问题