Короткий ответ
Соотношение пикселей устройства - это соотношение между физическими и логическими пикселями. Например, iPhone 4 и iPhone 4S сообщают о соотношении пикселей устройства 2, потому что физическое линейное разрешение вдвое превышает логическое линейное разрешение.
- Физическое разрешение: 960 х 640
- Логическое разрешение: 480 х 320
Формула:
Куда:
является физическим линейным разрешением
и:
это логическое линейное разрешение
Другие устройства сообщают о различном соотношении пикселей устройства, включая нецелые. Например, Nokia Lumia 1020 сообщает 1.6667, Samsumg Galaxy S4 сообщает 3, а Apple iPhone 6 Plus сообщает 2.46 (источник: dpilove ) . Но это ничего не меняет в принципе, так как вы никогда не должны разрабатывать для какого-то одного конкретного устройства.
обсуждение
CSS «пиксель» даже не определен как «один элемент изображения на экране какого - то», а скорее в качестве нелинейного углового измерения от угла обзора, который составляет примерно дюйм на расстоянии вытянутой руки. Источник: 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, который прекрасно масштабируется для всех разрешений.
width=device-width
я растяну его на весь экран?