Запросы мультимедиа для iPhone X/8/8 Plus
Какие медиа-запросы CSS соответствуют новым устройствам Apple? Мне нужно установить body
background-color
, чтобы изменить цвет фона безопасной области X.
Ответы
Ответ 1
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)
Литература:
Ответ 2
Вот некоторые из следующих медиа-запросов для iPhone. Вот ссылка на ссылку 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 */
@media only screen and (min-device-width: 375px) and (max-device-height: 812px) and (-webkit-device-pixel-ratio: 3) { }
/* iphone XR */
@media only screen and (min-device-width : 414px) and (max-device-height : 896px) and (-webkit-device-pixel-ratio : 2) { }
/* iphone XS */
@media only screen and (min-device-width : 375px) and (max-device-height : 812px) and (-webkit-device-pixel-ratio : 3) { }
/* iphone XS Max */
@media only screen and (min-device-width : 414px) and (max-device-height : 896px) and (-webkit-device-pixel-ratio : 3) { }
Ответ 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 выполните window.innerHeight
. Вот несколько полезных ссылок на эту тему:
Ответ 4
Кажется, что наиболее точный (и плавный) способ добавления отступов для 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/
Ответ 5
Если на вашей странице отсутствует элемент meta[@name="viewport"]
в его DOM, для обнаружения мобильного устройства можно использовать следующее:
@media only screen and (width: 980px), (hover: none) { … }
Если вы хотите избежать ложных срабатываний на десктопах, которые по волшебству имеют порт просмотра 980px, как это делают все мобильные браузеры, тогда в этот микс можно добавить тест device-width
:
@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):