iPhone XR / XS / XS Max CSS media queries

前端 未结 3 885
日久生厌
日久生厌 2021-01-30 10:40

What are the correct CSS media queries used to target Apple\'s 2018 devices: iPhone XR/XS/XS Max ?

相关标签:
3条回答
  • 2021-01-30 11:25

    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) { }
    



    Looking for a specific orientation ?

    Portrait

    Add the following rule:

        and (orientation : portrait) 
    

    Landscape

    Add the following rule:

        and (orientation : landscape) 
    



    References:

    • https://developer.apple.com/design/human-interface-guidelines/ios/visual-design/adaptivity-and-layout/
    • https://www.paintcodeapp.com/news/ultimate-guide-to-iphone-resolutions
    0 讨论(0)
  • 2021-01-30 11:35

    The info from Nathan is great. Thanks for the breakpoints which every browser's inspector doesn't seem to have. Only challenge I ran into was that all of my previous media queries use things like

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

    whereas the solution above uses only

    and (device-width : 414px)
    

    which can cause issues with queries you may already have that use both min-device and max-device.

    Thanks very much for these sizes and DPRs!

    0 讨论(0)
  • 2021-01-30 11:39

    The above is correct, but designers need to target the true screen dimensions to avoid scaling, cropping etc. For example the default landscape screen size is actually 808px for an XR.

    So this may be more appropriate: @media (max-width: 808px) {...

    This will in fact override this query: @media (max-width: 896px) {...

    The problem is Apples safe area insets. These can be overcome and get true 896px edge to edge width by adding the following;

    Meta tag: viewport-fit=cover

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

    The 0px size padding can be changed, or left right top bottom variables added, or adapt for portrait/landscape. But most will already have sufficient padding in their design.

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

    Not tested on other devices but seems they are all adopting same.

    0 讨论(0)
提交回复
热议问题