iPhone X / 8 / 8 Plus CSS медиа-запросы

Какие медиа-запросы CSS соответствуют новым устройствам Apple? Мне нужно установить body"s background-color изменить цвет фона безопасной области X.

3 ответа

Решение

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) 



Рекомендации:

Вот некоторые из следующих медиа-запросов для iPhone. Ссылка для ссылки https://mydevice.io/devices/

/* 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 */
@media only screen and (min-device-width: 375px) and (max-device-height: 812px) and (-webkit-device-pixel-ratio: 3) { }

Я заметил, что ответы здесь используют: device-width, device-height, min-device-width, min-device-height, max-device-width, max-device-height,

Пожалуйста, воздержитесь от их использования, поскольку они устарели. см. MDN для справки. Вместо этого используйте обычный min-width, max-width и так далее. Для дополнительной уверенности вы можете установить минимальное и максимальное значения в одно и то же количество пикселей. Например:

iPhone X

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

Вы также можете заметить, что я использую 635px для высоты. Попробуйте сами, высота окна на самом деле составляет 635 пикселей. запустить симулятор iOS для iPhone X и сделать в Safari Web инспектор window.innerHeight, Вот несколько полезных ссылок на эту тему:

Похоже, что наиболее точный (и беспроблемный) способ добавления отступов для iPhone X/8 с помощью env()...

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/

Если ваша страница отсутствует meta[@name="viewport"] элемент в своей DOM, то для обнаружения мобильного устройства можно использовать следующее:

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

Если вы хотите избежать ложных срабатываний на настольных компьютерах, у которых область просмотра волшебным образом установлена ​​на 980 пикселей, как это делают все мобильные браузеры, тогда device-width test также может быть добавлен в смесь:

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

Согласно списку на https://developer.mozilla.org/en-US/docs/Web/CSS/Media_Queries/Using_media_queries, новыйhover свойство, по-видимому, будет последним новым способом определить, что у вас есть мобильное устройство, которое на самом деле не работает hover; он был представлен только в 2018 году с Firefox 64 (2018), хотя он поддерживается с 2016 года с Android Chrome 50 (2016) или даже с 2014 года с Chrome 38 (2014):

Другие вопросы по тегам