что такое соотношение пикселей устройства?
это упоминается в каждой статье о mobile web, но нигде я не могу найти объяснение того, что именно делает этот атрибут мерой.
Может ли кто-нибудь уточнить, что делает такие запросы, как эта проверка?
@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 ответов
короткий ответ:
отношение пикселей устройства-это отношение между физическими пикселями и логическими пикселями. Например, iPhone 4 и iPhone 4S сообщают о соотношении пикселей устройства 2, поскольку физическое линейное разрешение вдвое превышает логическое линейное разрешение.
- физическое разрешение: 960 x 640
- логическое разрешение: 480 x 320
формула:
где:
- это физическое линейное разрешение
и:
логическое линейное разрешение
другие устройства сообщают о различных соотношениях пикселей устройства,включая нецелые. Например, Nokia Lumia 1020 сообщает 1.6667, Samsumg Galaxy S4 сообщает 3, а Apple iPhone 6 Plus сообщает 2.46 (источник: dpilove). Но это ничего не меняет в принцип, как вы никогда не должны проектировать для любого конкретного устройства.
Обсуждение
CSS "пиксель" даже не определяется как "один элемент изображения на некотором экране", а скорее как нелинейное угловое измерение of угол обзора, который составляет примерно
дюйма на расстоянии вытянутой руки. источник: CSS абсолютные длины
это имеет много последствий, когда дело доходит до веб-дизайна, таких как подготовка ресурсов изображений высокой четкости и тщательное применение различных изображений при различных соотношениях пикселей устройства. Вы не хотите заставлять устройство низкого уровня загружать изображение с очень высоким разрешением, только для его локального снижения. Вы также не хотите, чтобы высококачественные устройства для масштабирования изображений с низким разрешением для размытого пользовательского интерфейса.
если вы застряли с растровыми изображениями, чтобы приспособить для различных соотношений пикселя устройства, вы должны использовать Media-запросы CSS в предоставление различных наборов ресурсов для различных групп устройств. Объедините это с хорошими трюками, такими как 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).
Если вам нужны четкие изображения для иконок, line-art, элементов дизайна, которые не, вам нужно начать думать о SVG, который прекрасно масштабируется для всех разрешений.
соотношение пикселей устройства = = соотношение пикселей CSS
в мире веб-разработки отношение пикселей устройства (также называемое отношением пикселей CSS) - это то, что определяет, как разрешение экрана устройства интерпретируется CSS.
CSS браузера вычисляет логическое (или интерпретируемое) разрешение устройства по формуле:
например:
Apple iPhone 6s
- фактическое разрешение: 750 x 1334
- соотношение пикселей CSS: 2
- Логические Разрешение:
при просмотре веб-страницы CSS будет думать, что устройство имеет разрешение 375x667 экран и медиа-запросы будут отвечать, как если бы экран 375x667. Но отображаемые элементы на экране будут в два раза резче, чем фактический экран 375x667, потому что в физическом в два раза больше физических пикселей экран.
другие примеры:
Samsung Galaxy S4
- фактическое разрешение: 1080 x 1920
- соотношение пикселей CSS: 3
- Логические Разрешение:
iPhone 5s
- фактическое разрешение: 640 x 1136
- соотношение пикселей CSS: 2
- логические Разрешение:
почему существует соотношение пикселей устройства?
причина, по которой было создано соотношение пикселей CSS, заключается в том, что, поскольку экраны телефонов получают более высокое разрешение, если каждое устройство все еще имеет соотношение пикселей CSS 1, то веб-страницы будут слишком малы, чтобы видеть.
типичным полноэкранным настольным монитором является примерно 24" с разрешением 1920x1080. Представьте, что этот монитор был уменьшен до 5", но имел то же разрешение. Просмотр вещей на экране был бы невозможен, потому что они были бы такими маленькими. Но теперь производители выходят с экранами телефонов с разрешением 1920x1080.
таким образом, соотношение пикселей устройства было изобретено производителями телефонов, чтобы они могли продолжать нажимать разрешение, резкость и качество экранов телефонов, не делая элементы на экране слишком маленькими, чтобы видеть или читать.
вот инструмент, который также сообщает вам пиксель вашего текущего устройства плотность:
https://developer.mozilla.org/en/CSS/Media_queries#-moz-device-pixel-ratio
- moz-устройство-пиксель-отношение
Дает количество пикселей устройства на пиксель CSS.
Это почти самоочевидны. число описывает отношение того, сколько "реальных" пикселей (физических пикселей экрана) используется для отображения одного "виртуального" пикселя (размер, установленный в CSS).
статья Бориса Смуса высокие изображения DPI для переменных плотностей пикселей имеет более точное определение отношения пикселей устройства: количество пикселей устройства на пиксель CSS является хорошим приближением, но не всей историей.
обратите внимание, что вы можете получить DPR, используемый устройством с window.devicePixelRatio
.