iPhone XR / XS / XS Max CSS media queries

54,116

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



Looking for a specific orientation ?

Portrait

Add the following rule:

    and (orientation : portrait) 

Landscape

Add the following rule:

    and (orientation : landscape) 



References:

Solution 2

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.

Share:
54,116
nathan
Author by

nathan

merge delete

Updated on July 04, 2020

Comments

  • nathan
    nathan almost 4 years

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

  • SameerShaik
    SameerShaik almost 4 years
    other andorid devices are also getting affected by above styes
  • Paula
    Paula almost 4 years
    The answer provided by @DickKirkland is correct, since you must add the min and max to device-width and device-height
  • Frank Stallone III
    Frank Stallone III about 3 years
    Many years ago I created a snippet I shared on Gist/Github† on how to target these devices using this technique with SCSS. I am now learning this device-width technique is deprecated. What are y'all using now instead? † gist.github.com/frankstallone/cee114d0b6935717696e6506552bc7‌​5a
  • Jacob Broughton
    Jacob Broughton almost 3 years
    I wish all SO answers were this straight forward, thanks!
  • OZZIE
    OZZIE over 2 years
    I dunno about the current latest browsers but when media queries started (max/min)-device-width meant the actual resolution of the device and (max/min)-width means CSS pixels. So if the screen resolution width is 720px and the screens pixel density is 2 then CSS pixels is 360 (half). device-width is also now deprecrated developer.mozilla.org/en-US/docs/Web/CSS/@media/device-width
  • OZZIE
    OZZIE over 2 years
    I dunno about the current latest browsers but when media queries started (max/min)-device-width meant the actual resolution of the device and (max/min)-width means CSS pixels. So if the screen resolution width is 720px and the screens pixel density is 2 then CSS pixels is 360 (half). Its much easier to work with max/min-width than consider all pixel densities., device-width is also now deprecrated developer.mozilla.org/en-US/docs/Web/CSS/@media/device-width