Что такое соотношение пикселей устройства? - PullRequest
155 голосов
/ 09 января 2012

здесь упоминается каждая статья о мобильном Интернете, но нигде я не могу найти объяснение того, что именно измеряет этот атрибут.
Может ли кто-нибудь уточнить, что делает такие запросы, как этот чек?

@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
only screen and (min--moz-device-pixel-ratio: 1.5),
only screen and (-o-device-pixel-ratio: 3/2), 
only screen and (min-device-pixel-ratio: 1.5) {

    //high resolution images go here

}

Ответы [ 4 ]

141 голосов
/ 28 января 2014

Соотношение пикселей устройства == Соотношение пикселей CSS

В мире веб-разработок соотношение пикселей устройства (также называемое CSS Pixel Ratio) определяет то, как разрешение экрана устройства интерпретируется CSS.

CSS браузера вычисляет логическое (или интерпретированное) разрешение устройства по формуле:

formula

Например:

Apple iPhone 6s

  • Фактическое разрешение: 750 x 1334
  • Соотношение пикселей CSS: 2
  • Логическое разрешение:

formula

При просмотре веб-страницы CSS будет думать, что устройство имеет экран с разрешением 375x667 , а Media Queries будет реагировать так, как если бы экран был 375x667 . Но визуализированные элементы на экране будут в два раза четче, чем реальный экран 375x667, поскольку на физическом экране в два раза больше физических пикселей.

Некоторые другие примеры:

Samsung Galaxy S4

  • Фактическое разрешение: 1080 x 1920
  • Соотношение пикселей CSS: 3
  • Логическое разрешение:

formula

iPhone 5s

  • Фактическое разрешение: 640 x 1136
  • Соотношение пикселей CSS: 2
  • Логическое разрешение:

formula

Почему существует соотношение пикселей устройства?

Причина, по которой было создано соотношение пикселей в CSS, заключается в том, что по мере того, как экраны телефонов получают более высокие разрешения, если бы у каждого устройства все еще было соотношение пикселей в CSS, равное 1, веб-страницы отображались бы слишком маленькими, чтобы их можно было увидеть.

Типичный полноэкранный настольный монитор составляет примерно 24 "при разрешении 1920x1080. Представьте, что этот монитор был уменьшен до 5", но имел то же разрешение. Просмотр вещей на экране был бы невозможен, потому что они были бы такими маленькими. Но производители выпускают экраны телефонов с разрешением 1920x1080 постоянно.

Таким образом, соотношение пикселей устройства было изобретено производителями телефонов, чтобы они могли продолжать увеличивать разрешение, резкость и качество экранов телефонов, не делая элементы на экране слишком маленькими, чтобы их можно было увидеть или прочитать.

Вот инструмент, который также сообщает вам плотность пикселей вашего текущего устройства:

http://bjango.com/articles/min-device-pixel-ratio/

141 голосов
/ 09 января 2012

Краткий ответ

Соотношение пикселей устройства - это соотношение между физическими и логическими пикселями.Например, iPhone 4 и iPhone 4S сообщают о соотношении пикселей устройства 2, поскольку физическое линейное разрешение вдвое превышает логическое линейное разрешение.

  • Физическое разрешение: 960 x 640
  • Логическое разрешение: 480 x 320

Формула:

linres_p/linres_l

Где:

linres_p является физическое линейное разрешение

и:

linres_l - это логическое линейное разрешение

Другие устройства сообщают о различном соотношении пикселей устройства, включая нецелочисленныеНапример, Nokia Lumia 1020 сообщает 1.6667, Samsumg Galaxy S4 сообщает 3, а Apple iPhone 6 Plus сообщает 2.46 (источник: dpilove ) .Но это ничего не меняет в принципе, так как вы никогда не должны проектировать для какого-либо одного конкретного устройства.

Обсуждение

CSS-пиксель даже не определяется как «один элемент изображения на некотором экране»", а скорее как нелинейное угловое измерение из 0.0213° viewing angle, which is approximately 1/96 of an inch at arm's length. Source: абсолютных длин CSS

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

Если вы застряли с растровыми изображениями, чтобы приспособиться к множеству различных соотношений пикселей устройства, вы должны использовать CSS Media Queries для предоставления разных наборов ресурсов для разных групп устройств.Добавьте к этому приятные трюки, такие как background-size: cover или явно установите background-size в процентах.

Пример

#element { background-image: url('lores.png'); }

@media only screen and (min-device-pixel-ratio: 2) {
    #element { background-image: url('hires.png'); }
}

@media only screen and (min-device-pixel-ratio: 3) {
    #element { background-image: url('superhires.png'); }
}

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

Корпус для векторной графики

Как еще иПо мере появления новых типов устройств становится все сложнее предоставить им все необходимые растровые ресурсы.В CSS медийные запросы в настоящее время являются единственным способом, а в HTML5 элемент изображения позволяет использовать разные источники для разных медиа-запросов, но поддержка по-прежнему не на 100%, так как большинство веб-разработчиков все еще должны поддерживатьIE11 на некоторое время больше (источник: caniuse ) .

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

9 голосов
/ 09 января 2012

https://developer.mozilla.org/en/CSS/Media_queries#-moz-device-pixel-ratio

-moz-устройства пиксел отношение
Дает количество пикселей устройства на пиксель CSS.

это почти самоочевидно. число описывает соотношение количества «реальных» пикселей (физических пикселей экрана), используемых для отображения одного «виртуального» пикселя (размер установлен в CSS).

8 голосов
/ 19 марта 2015

Статья Бориса Смуса Изображения с высоким разрешением для переменной плотности пикселей имеет более точное определение соотношения пикселей устройства: количество пикселей устройства на пиксель CSS является хорошим приближением, но не всей историей.

Обратите внимание, что вы можете получить DPR, используемый устройством с window.devicePixelRatio.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...