В чем разница между max-device-width и max-width для мобильного Интернета?

Мне нужно разработать несколько html-страниц для телефонов iphone / android, но в чем разница между max-device-width и max-width? Мне нужно использовать разные CSS для разных размеров экрана.

@media all and (max-device-width: 400px)

@media all and (max-width: 400px)

Какая разница?


person virsir    schedule 19.07.2011    source источник
comment
comment
Я обнаружил, что max-device-width работает, даже если тег <meta name="viewport" ...> не включен для устройств с маленьким экраном, а max-width не работает без тега meta   -  person Faizan Akram Dar    schedule 12.07.2016


Ответы (8)


max-width - ширина целевой области отображения, например браузер

max-device-width - ширина всей области рендеринга устройства, т.е. фактический экран устройства.

То же самое касается max-height и max-device-height, естественно.

person Ian Devlin    schedule 19.07.2011
comment
Если вы хотите увидеть изменения при изменении размера браузера, используйте max-width для разработки, хотя max-device-width более точен для производства. - person John Magnolia; 25.03.2013
comment
@JohnMagnolia Почему вы думаете, что max-device-width лучше для продакшена? Разве максимальная ширина не гарантирует лучшую отзывчивость, независимо от устройства? - person e_known; 02.07.2013
comment
@eknown Согласен. У пользователей со всем спектром навыков / знаний не всегда развернуто окно браузера на рабочем столе (но я еще не видел планшет или телефон, у которых браузер НЕ был открыт в развернутом виде - я полагаю, что это возможно в гибридном приложении, но это это другой случай). Max-width, безусловно, был бы более универсальным. - person Jason; 16.01.2014
comment
@eknown Я не согласен. В зависимости от ваших стилей у вас может быть совсем другой вид после достижения этой точки останова мультимедиа, и если вы загружаете таблицы стилей на основе точек останова мультимедиа, это может быть очень неприятным для сайта, когда он будет выглядеть совершенно иначе при изменении размера окна браузера. - person TwinPrimesAreEz; 04.04.2014
comment
@Ian Devlin Должен ли я использовать max-device-width для мобильных устройств и ipad и max-width для ноутбуков и destop? - person Coder; 13.03.2015
comment
Привет, Джош, я использую и width, и device-width, так что я могу получить ожидаемый вид на телефоне, а также адаптивный дизайн на ноутбуке для браузеров разного размера.Спасибо за ваш пост.Я прочту его обязательно. это правильно? - person Coder; 26.03.2015
comment
Если у вас радикально другой макет для мобильных устройств, вероятно, основная причина в том, что нет курсора мыши (им нужны кнопки большего размера и один столбец для прокрутки). Отличный медиа-запрос для использования в этом случае - @media screen and (pointer: coarse) and (hover: none), который переключится на мобильную версию независимо от того, сколько пикселей мобильные устройства упаковывают на свои экраны в будущем. - person EoghanM; 11.01.2019
comment
@EoghanM большое спасибо за этот комментарий. Я очень старался получить идеальное обнаружение мобильных устройств, и это единственное, что работает надежно. - person LPChip; 09.06.2020

max-width относится к ширине области просмотра и может использоваться для определения определенных размеров или ориентации в сочетании с max-height. Используя несколько условий max-width (или min-width), вы можете изменять стиль страницы при изменении размера браузера или изменении ориентации на таком устройстве, как iPhone.

max-device-width относится к размеру области просмотра устройства независимо от ориентации, текущего масштаба или изменения размера. Это не изменится на устройстве, поэтому его нельзя использовать для переключения таблиц стилей или директив CSS при повороте или изменении размера экрана.

person voncox    schedule 09.08.2011
comment
Этот ответ сделал его для меня лучше, чем принятый ответ. Похоже, что для большинства приложений будут использоваться max-width и max-height. - person hotshot309; 13.06.2012
comment
@JackieChiles представляет собой хороший аргумент в другом потоке SO, который следует учитывать (в отношении мобильных стилей, появляющихся на больших устройствах): stackoverflow.com/questions/8564752/ - person hotshot309; 13.06.2012
comment
Этот хороший ответ не является полным: ориентация меняет местами ширину устройства и высоту устройства на Android, но не на iOS: см. quirksmode.org/blog/archives/2010/04/the_orientation.html. - person ; 07.12.2012

Что вы думаете об использовании этого стиля?

Для всех точек останова, которые в основном предназначены для "мобильных устройств", я использую min(max)-device-width, а для точек останова, которые в основном предназначены для "настольных компьютеров", использую min(max)-width.

Есть много «мобильных устройств», которые плохо рассчитывают ширину.

Посмотрите на http://www.javascriptkit.com/dhtmltutors/cssmediaqueries2.shtml:

/* #### Mobile Phones Portrait #### */
@media screen and (max-device-width: 480px) and (orientation: portrait){
  /* some CSS here */
}

/* #### Mobile Phones Landscape #### */
@media screen and (max-device-width: 640px) and (orientation: landscape){
  /* some CSS here */
}

/* #### Mobile Phones Portrait or Landscape #### */
@media screen and (max-device-width: 640px){
  /* some CSS here */
}

/* #### iPhone 4+ Portrait or Landscape #### */
@media screen and (max-device-width: 480px) and (-webkit-min-device-pixel-ratio: 2){
  /* some CSS here */
}

/* #### Tablets Portrait or Landscape #### */
@media screen and (min-device-width: 768px) and (max-device-width: 1024px){
  /* some CSS here */
}

/* #### Desktops #### */
@media screen and (min-width: 1024px){
  /* some CSS here */
}
person 1ubos    schedule 20.12.2013
comment
Не отвечает на вопрос и на самом деле является плохим способом работы с точками останова - будьте осторожны. - person Forty; 29.12.2017

max-device-width - ширина рендеринга устройства

@media all and (max-device-width: 400px) {
    /* styles for devices with a maximum width of 400px and less
       Changes only on device orientation */
}

@media all and (max-width: 400px) {
    /* styles for target area with a maximum width of 400px and less
       Changes on device orientation , browser resize */
}

Максимальная ширина - это ширина целевой области отображения, означающая текущий размер браузера.

person Sarath    schedule 19.07.2011
comment
@media all and (max-width: 400px) {} В чем разница - person virsir; 22.07.2011

разница в том, что max-device-width - это вся ширина экрана, а max-width означает пространство, используемое браузером для отображения страниц. Но еще одним важным отличием является поддержка браузеров Android, на самом деле, если вы собираетесь использовать max-device-width, это будет работать только в Opera, вместо этого я уверен, что max-width будет работать для всех типов мобильных браузеров ( Я тестировал его в Chrome, Firefox и Opera для ANDROID).

person Danny    schedule 10.10.2012

max-width - это ширина целевой области отображения, например браузер; max-device-width - это ширина всей области рендеринга устройства, то есть фактического экрана устройства.

• Если вы используете max-device-width, при изменении размера окна браузера на рабочем столе стиль CSS не изменится на другие настройки медиа-запроса;

• Если вы используете максимальную ширину, когда вы изменяете размер браузера на своем рабочем столе, CSS изменится на другие настройки медиа-запроса, и вы можете быть показаны со стилем для мобильных устройств, например как меню, удобное для касания.

person Lucky Chaturvedi    schedule 01.07.2016

Если вы создаете кроссплатформенное приложение (например, с помощью phonegap / cordova), тогда,

Не используйте ширину устройства или высоту устройства. Лучше используйте ширину или высоту в медиа-запросах CSS, потому что устройство Android будет давать проблемы с шириной или высотой устройства. Для iOS работает нормально. Только устройства Android не поддерживают ширину / высоту устройства.

person Himanshu Garg    schedule 26.12.2014

Больше не используйте device-width / height.

ширина устройства, высота устройства и соотношение сторон устройства не рекомендуются в Media Queries Level 4: https://developer.mozilla.org/en-US/docs/Web/CSS/@media#Media_features.

Просто используйте ширину / высоту (без мин. / Макс.) В сочетании с ориентацией и (мин. / Макс.) Разрешением для нацеливания на определенные устройства. На мобильном устройстве ширина / высота должна быть такой же, как ширина / высота устройства.

person SammieFox    schedule 09.05.2016
comment
Элементы plain device-xxx устарели, элементы max-device-xxx НЕ рекомендуются. - person Roger Krueger; 19.10.2017
comment
@RogerKrueger Вы в этом уверены? Я не вижу ничего, что указывало бы на то, что медиа-запросы max-device-xxx не являются устаревшими. - person Jonny Cook; 24.02.2018