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
, Вот несколько полезных ссылок на эту тему:
- 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
Похоже, что наиболее точный (и беспроблемный) способ добавления отступов для 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);
Вот ссылка, описывающая это:
Если ваша страница отсутствует 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):