Все перечисленные выше ответы, которые используют max-device-width
или max-device-height
для медиазапросов, страдают от очень сильной ошибки: они также нацелены на множество других популярных мобильных устройств (вероятно, нежелательных и никогда не тестируемых, или которые появятся на рынке в будущем).
Эти запросы будут работать для любого устройства с меньшим экраном , и, вероятно, ваш дизайн будет сломан.
В сочетании с подобными медиа-запросами для конкретных устройств (для HTC, Samsung, IPod, Nexus ...) эта практика создаст бомбу замедленного действия. Для отладки эта идея может сделать ваш CSS неуправляемым спагетти. Вы никогда не сможете протестировать все возможные устройства.
Имейте в виду, что единственный медиа-запрос, всегда нацеленный на IPhone5 и ни на что другое , это:
/* iPhone 5 Retina regardless of IOS version */
@media (device-height : 568px)
and (device-width : 320px)
and (-webkit-min-device-pixel-ratio: 2)
/* and (orientation : todo: you can add orientation or delete this comment)*/ {
/*IPhone 5 only CSS here*/
}
Обратите внимание, что здесь проверяется точная ширина и высота, а не максимальная ширина.
Теперь, каково решение? Если вы хотите написать веб-страницу, которая будет хорошо выглядеть на всех возможных устройствах, лучше всего использовать деградацию
/ * шаблон деградации мы проверяем только ширину экрана, это изменится при повороте из портретного в ландшафтный режим * /
/*css for desktops here*/
@media (max-device-width: 1024px) {
/*IPad portrait AND netbooks, AND anything with smaller screen*/
/*make the design flexible if possible */
/*Structure your code thinking about all devices that go below*/
}
@media (max-device-width: 640px) {
/*Iphone portrait and smaller*/
}
@media (max-device-width: 540px) {
/*Smaller and smaller...*/
}
@media (max-device-width: 320px) {
/*IPhone portrait and smaller. You can probably stop on 320px*/
}
Если более 30% посетителей вашего сайта приходят с мобильных устройств, переверните эту схему с ног на голову, предоставив подход, ориентированный на мобильные устройства. Используйте min-device-width
в этом случае. Это ускорит рендеринг веб-страницы для мобильных браузеров.