Статьи

5 способов поддержки дисплеев Retina высокой плотности

Интересный вопрос был затронут Бренданом Дэвисом в моем недавнем посте «Адаптивный веб-дизайн и полосы прокрутки: лучше ли реализация Chrome?» : Влияют ли точки прерывания RWD на экраны с высокой плотностью пикселей?

Короткий ответ: нет — но нам нужно немного глубже вникнуть и посмотреть на проблемы, которые они могут вызвать.

Что такое сетчатка?

«Retina» — это торговая марка Apple для экранов двойной плотности, но другие производители создают аналогичные дисплеи. Эта технология используется в последних iPhone, iPad, MacBook Pro и других высококлассных устройствах.

Например, MacBook Pro 15 ″ имеет разрешение 2880 × 1800 или 220 пикселей на дюйм. При таком масштабе большинство людей не могут заметить отдельные пиксели на типичных расстояниях просмотра — приложения и веб-сайты будут слишком малы для использования.

Следовательно, устройство возвращается к стандартному разрешению 1440 × 900, но дополнительные пиксели могут использоваться, чтобы шрифты и графика выглядели более плавными.

В чем проблема?

Растровые изображения стандартного разрешения могут выглядеть блочно на дисплее Retina. Фотография размером 400 x 300 масштабируется до 800 x 600 пикселей, но дополнительных подробностей нет. Это может быть заметно по сравнению с гладкими шрифтами и другими изображениями с высоким разрешением.

Использование в реальном мире

Если вы посмотрите в Интернете, вы будете прощены за мысли, что у всех есть дисплей Retina. В настоящее время он доступен только в устройствах высокого класса, но разработчики желают его, так что это ведет к непропорциональным объемам онлайн-дискуссий. В реальном мире процент людей, использующих аналогичные дисплеи, представлен низкими цифрами.

Давайте рассмотрим это следующим образом: если вы не разрабатываете для 1% пользователей IE6 / 7, вам, вероятно, не стоит слишком беспокоиться о людях, использующих Rentina, тем более что они все еще могут просматривать ваш сайт.

Тем не менее, Retina-подобные экраны в конечном итоге перейдут на все устройства. Сейчас мало причин для беспокойства, но нет никакого вреда в каком-то перспективном планировании. Давайте посмотрим на варианты в порядке рекомендации …

1. Используйте SVG и CSS3 эффекты

Подсказка в названии, но масштабируемая векторная графика … масштабируема! Неважно, насколько большим будет SVG — он всегда будет плавным, потому что он определяется с использованием векторов (линий и форм), а не отдельных пикселей.

SVG не практичен для фотографий, но идеален для логотипов, диаграмм и диаграмм. Основным недостатком является отсутствие поддержки в IE8 и ниже, но вы всегда можете предоставить запасной вариант PNG или использовать прокладку, такую ​​как Raphaël или svgweb . Смотрите также: Как добавить масштабируемую векторную графику на вашу веб-страницу .

Вы также можете заменить некоторые изображения полностью. Например, заголовки, градиенты, углы или тени, определенные как графика, могут быть воспроизведены с использованием только CSS3. Они будут рендериться с лучшим качеством, уменьшать количество HTTP-запросов и использовать меньшую пропускную способность.

2. Используйте иконки веб-шрифтов

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

Существует множество коммерческих и бесплатных наборов иконок:

Или вы можете использовать размещенный сервис шрифтов, такой как We Love Icon Fonts .

Я рекомендую создать свой собственный небольшой набор пользовательских значков с помощью онлайн-инструментов, таких как Fontello или IcoMoon .

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

Retina имеет в четыре раза больше пикселей, чем стандартные экраны. Если у вас есть изображение размером 400 x 300 (120 000 пикселей), вам нужно использовать альтернативу 800 x 600 (480 000 пикселей), чтобы хорошо отобразить его на дисплее с высокой плотностью.

Однако размер файла высокого разрешения не обязательно может быть в четыре раза больше. Каждое изображение отличается, но если оно содержит сплошные цветные блоки или детали, которые могут быть пропущены, может оказаться целесообразным использовать изображение размером 800 x 600 и масштабировать его в браузере.

Будьте прагматичны: если стандартное изображение имеет размер 200 КБ, а версия с высоким разрешением — 250 КБ, использование методов замены изображений дает незначительные преимущества. Используйте лучшую версию повсюду.

4. Используйте CSS замену изображений

Будут времена, когда версии вашего изображения с высоким разрешением будут в четыре раза больше — или больше. В этих обстоятельствах вы можете рассмотреть способы замены изображения, то есть стандартное изображение заменяется на альтернативу Retina большего размера. Можно использовать следующий код медиазапроса:

#myimage {
	width: 400px;
	height: 300px;
	background: url(lo-res.jpg) 0 0 no-repeat;
}

@media
screen and (-webkit-min-device-pixel-ratio: 1.5),
screen and (-moz-min-device-pixel-ratio: 1.5),
screen and (min-device-pixel-ratio: 1.5) {
	#myimage {
		background-image: url(hi-res.jpg);
	}
}

Недостатки:

  1. Вам нужно будет создать и поддерживать два набора изображений.
  2. Некоторые браузеры загружают оба изображения.

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

5. Используйте JavaScript Image Replacement

Обнаружение дисплея Retina может быть реализовано с использованием следующего кода:

 var isRetina = (
	window.devicePixelRatio > 1 ||
	(window.matchMedia && window.matchMedia("(-webkit-min-device-pixel-ratio: 1.5),(-moz-min-device-pixel-ratio: 1.5),(min-device-pixel-ratio: 1.5)").matches)
);

Как только дисплей Retina определен, вы можете:

  1. Переберите все изображения страниц и извлеките URL.
  2. Добавьте «@ 2x» к имени файла и попытайтесь загрузить полученный URL-адрес изображения с помощью Ajax.
  3. Если найдено, замените текущее изображение альтернативой высокого разрешения.

К счастью, тяжелая работа была проделана для вас на retinajs.com . Несмотря на то, что он добавляет всего 4 КБ, устройства отображения с высокой плотностью будут загружать изображения дважды — хотя второй раз будет происходить как фоновый процесс после загрузки страницы.

Мой совет: будьте практичны и не усложняйте. Не тратьте слишком много времени, пытаясь решить незначительные проблемы рендеринга на устройствах с пропорционально небольшим количеством пользователей. Конечно, все это не имеет значения, когда ваш начальник получает свой новый iPad и начинает жаловаться на качество изображения …

Комментарии к этой статье закрыты. У вас есть вопрос о сетчатке? Почему бы не спросить об этом на наших форумах ?