retina ready это что

Что нужно знать о вёрстке под ретину

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

Есть множество способов подготовить вёрстку, начиная от использования медиавыражений и заканчивая написанием скриптов. Мы не будем углубляться в эту тему и разберём только основные моменты, которые полезно знать начинающим веб-разработчикам.

Дисклеймер: в статье мы называем ретиной все экраны с повышенной плотностью пикселей, но знаем, что это не так. Считайте это литературным допущением.

Что такое пиксель?

Чтобы понять, чем ретина-экраны отличаются от остальных и как с ними работать, нужно для начала разобрать понятие пикселя. Пиксели бывает двух видов:

Физический пиксель — пиксель устройства — это пиксель на матрице девайса. Например, когда мы говорим, что ширина экрана устройства 480px, то подразумеваем, что по всей ширине находится 480 неделимых ячеек. Именно они с помощью цветовой схемы RGB формируют изображение на экране.

Чем больше физических пикселей на экране, тем выше его плотность и тем детальнее выводимое на него изображение. Для измерения плотности экранов используют специальную единицу PPI — Pixels per Inch. Она показывает количество физических пикселей на квадратном дюйме экрана. То есть чем выше PPI, тем лучше графика.

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

В свою очередь, разработчики никогда не работают с физическими пикселями устройств, только с CSS-пикселями. Чему равен один CSS-пиксель? Изначально стандарт W3C приравнивал его к значению 1/96 дюйма, то есть около 0,26 мм., а браузеры для упрощения расчетов принимали его 1:1 к физическому пикселю при масштабе 100%. Но позже многое изменилось: настало время экранов с повышенной плотностью пикселей.

Что такое ретина-дисплеи?

Ретиной называют дисплеи Apple с повышенной плотностью пикселей на квадратный дюйм. Впервые о них заговорили в 2010 году, когда Стив Джобс презентовал iPhone 4. Новый на тот момент смартфон получил экран с плотностью 326 PPI — в два раза выше, чем у его предшественника iPhone 3GS.

Ретина-дисплеи вывели смартфоны на новый уровень. По словам самого Стива Джобса, на ретина-дисплеях удалось достичь такого PPI, на котором человеческий глаз перестаёт различать отдельные пиксели. Текст стал выглядеть так, словно он выведен не на экран мобильного устройства, а напечатан в хорошей книге. Изображения стали более чёткими и плавными. Появились полутона и исчезла «зернистость» картинок.

Сейчас экраны с повышенной плотностью пикселей выпускают, пожалуй, все крупные бренды. Их нельзя называть ретиной — это название принадлежит исключительно компании Apple. Но принцип отображения аналогичен.

retina ready это что. Смотреть фото retina ready это что. Смотреть картинку retina ready это что. Картинка про retina ready это что. Фото retina ready это чтоСлева изображение для ретина-экрана, справа — для стандартного дисплея.

Как узнать плотность пикселей на дюйм?

С устройствами Apple всё просто. Можно зайти на официальный сайт, выбрать интересующий девайс и нажать на кнопку «Спецификация». Вы попадёте на страницу с подробными техническими характеристиками, в том числе с информацией о диагонали дисплея, разрешении и PPI:

retina ready это что. Смотреть фото retina ready это что. Смотреть картинку retina ready это что. Картинка про retina ready это что. Фото retina ready это что

С другими устройствами может быть чуть сложнее: не все производители указывают плотность пикселей на дюйм. Например, некоторые бренды в технических характеристиках описывает только диагональ и разрешение экрана. Поэтому если вам нужно узнать PPI на конкретном девайсе, можете вычислить его сами по формуле:

retina ready это что. Смотреть фото retina ready это что. Смотреть картинку retina ready это что. Картинка про retina ready это что. Фото retina ready это что

Если не хочется считать вручную, можно воспользоваться любым онлайн-калькулятором. Например, такие сервисы есть на сайте 7pads.com, myresolutionis.ru или prostudio.ru. Они показывают одинаковые результаты, поэтому можете выбрать любой.

retina ready это что. Смотреть фото retina ready это что. Смотреть картинку retina ready это что. Картинка про retina ready это что. Фото retina ready это чтоРезультаты подсчёта: слева myresolutionis.ru, справа — prostudio.ru

Особенности вёрстки под ретина-экраны

Ретинизация изображений — стандарт на рынке веб-разработки. Уже сейчас многие устройства (и не только от Apple) используют экраны с повышенной плотностью пикселей. Поэтому, чтобы вёрстка выглядела хорошо, нужно научиться ретинизировать контент. Давайте разберём, какой тип контента нужно оптимизировать под экраны с высокой плотностью, а какой не нуждается в дополнительной подготовке.

Текст

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

, и других тегов.

Исключение — логотипы: даже если они выглядят как текст, их лучше вставлять изображением. Причина в том, что если по каким-то причинам основной шрифт не загрузится, браузер заменит его на стандартный. В таком случае логотип уже не будет соответствовать фирменному стилю компании. Например, представьте себе лого Coca-Cola, написанное не узнаваемым курсивом, а стандартным Arial.

retina ready это что. Смотреть фото retina ready это что. Смотреть картинку retina ready это что. Картинка про retina ready это что. Фото retina ready это чтоТак мог бы выглядеть логотип Coca-Cola, если бы шрифт не подгрузился. retina ready это что. Смотреть фото retina ready это что. Смотреть картинку retina ready это что. Картинка про retina ready это что. Фото retina ready это что

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

Иконки и декоративные изображения

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

retina ready это что. Смотреть фото retina ready это что. Смотреть картинку retina ready это что. Картинка про retina ready это что. Фото retina ready это что

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

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

retina ready это что. Смотреть фото retina ready это что. Смотреть картинку retina ready это что. Картинка про retina ready это что. Фото retina ready это что

Контентные и фоновые изображения

Для контентных и фоновых изображений обычно используют PNG, JPG, WebP и другие растровые форматы. Почему не SVG? Потому что отрисовывать фотореалистичную графику в векторе — очень трудоемкий и технически сложный процесс.

Вся растровая графика состоит из пикселей, количество которых определяется при создании изображения и остается неизменным. Поэтому при увеличении или уменьшении такой картинки её качество ухудшается: она становится «зернистой». Из-за таких особенностей основной упор при оптимизации вёрстки под ретина-дисплеи делается именно на подготовку и добавление растровой графики: контентных и фоновых изображений.

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

Обычно дизайнеры знают про экраны с повышенной плотностью и сами готовят дополнительные изображения. Так, если вы работаете с Figma, то можете легко выгрузить изображения с индексом @1x для обычных дисплеев и @2x — для дисплеев, плотность пикселей которых в два раза выше. Обычно этих индексов достаточно. Но в некоторых проектах идут дальше и используют отдельную графику с индексом @3x и выше.

Пример: как экспортировать изображения в Figma.

При ретинизации изображений учитывается плотность пикселей экрана устройства и в зависимости от нее показываются разные изображения. Чтобы браузер понимал, какую из картинок показать пользователю, используют медиазапросы или специальные атрибуты.

Фоновые изображения вставляют с помощью медиавыражения @media(min-resolution: 2dppx) <. >.

Вариант с префиксами:

У функции image-set() есть несколько особенностей:

В Safari префикс указывать не нужно, но синтаксис функции немного другой, с использованием функции url (): background-image: (url(«platypus.png» 1x));

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

Для контентных изображений следует использовать тег

После добавления нескольких вариантов графики полезно проверять, как отображаются изображения на экранах с разной плотностью пикселей. Это можно сделать с помощью инструментов разработчика. Например, в Chrome DevTools на верхней панели можно изменить плотность экрана на DPR: 1.0, 2.0 или 3.0. А во вкладке «Сеть» или Network можно посмотреть, какие картинки загружаются на экранах с разной плотностью. Главное — при изменении DPR не забывайте перезагружать страницу.

retina ready это что. Смотреть фото retina ready это что. Смотреть картинку retina ready это что. Картинка про retina ready это что. Фото retina ready это что

Подведём итоги

Используйте тексты и градиенты — их не нужно дополнительно оптимизировать.

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

По возможности отдавайте приоритет SVG.

При добавлении контентных изображений используйте тег

Для фоновых картинок применяйте медиавыражение @media(min-resolution: 2dppx) <. >или используйте CSS-функцию image-set.

Не забывайте проверять, как выглядит вёрстка на экранах с различной плотностью пикселей.

Если вы хотите более подробно погрузиться в ретиновую графику и научиться готовить вёрстку для ретина-экранов, попробуйте наш профессиональный курс «HTML и CSS. Адаптивная вёрстка и автоматизация».

Другие наши статьи о вёрстке

Источник

Оптимизация графики для Retina-экранов

После недавнего выпуска Retina MacBook Pro и The new IPad, экраны с увеличенной плотностью пикселей начали активно входить в нашу жизнь. Что это значит для веб-разработчиков?

Для начала разберемся в терминологии.

Физические пиксели

retina ready это что. Смотреть фото retina ready это что. Смотреть картинку retina ready это что. Картинка про retina ready это что. Фото retina ready это что

Физические пиксели (device pixel или physical pixel) — привычные нам пиксели: самые маленькие элементы любого дисплея, каждый из которых имеет свой цвет и яркость.

Плотность экрана (Screen density) — это количество физических пикселей дисплея. Обычно измеряется в пикселях-на-дюйм (PPI: pixels per inch). Apple, разработав Retina-экраны с двойной плотностью пикселей, утверждает, что человеческий глаз не способен различить бо′льшую плотность.

CSS-пиксели

retina ready это что. Смотреть фото retina ready это что. Смотреть картинку retina ready это что. Картинка про retina ready это что. Фото retina ready это что

CSS-пиксели (CSS pixels) — абстрактная величина, используемая браузерами для точного отображения контента на страницах, вне зависимости от экрана (DIPs: device-independent pixels). Пример:

Такой блок на обычных экранах будет занимать область 200×300 пикселей, а на Retina-экранах тот же блок получит 400×600 пикселей.Таким образом, на Retina-экранах плотность пикселей в 4 раза больше, чем на обычных:
retina ready это что. Смотреть фото retina ready это что. Смотреть картинку retina ready это что. Картинка про retina ready это что. Фото retina ready это что

Соотношение между физическими и CSS-пикселями можно устанавливать так:

В Javascript добиться этого можно, используя

Растровые пиксели

retina ready это что. Смотреть фото retina ready это что. Смотреть картинку retina ready это что. Картинка про retina ready это что. Фото retina ready это что
Растровые пиксели (bitmap pixels) — самые маленькие части, составляющие растровое изображение (PNG, JPF, GIF и т.д.) Каждый пиксель содержит информацию, о цвете и расположении в системе координат изображения. В некоторых форматах пиксель может содержать дополнительную информацию, например, прозрачность.

Оптимизация

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

HTML и CSS-масштабирование

Самый простой способ подготовить графику к Retina-дисплею — это просто разделить пополам физические размеры изображения. Например, чтобы показать фотографию 200×300 пикселей на экране с увеличенной плотностью пикселов, необходимо загрузить фото размером 400×600 пикселей и уменьшить его, используя CSS-аттрибуты или HTML-параметры. Таким будет отображение на обычном экране:
retina ready это что. Смотреть фото retina ready это что. Смотреть картинку retina ready это что. Картинка про retina ready это что. Фото retina ready это что

А таким на Retina:
retina ready это что. Смотреть фото retina ready это что. Смотреть картинку retina ready это что. Картинка про retina ready это что. Фото retina ready это что

Есть несколько способов реализации HTML и CSS-масштабирования:

Самый простой способ — просто задать параметры width и height тегу img:

Где использовать: на одностраничных сайтах с несколькими изображениями.

Javascript

Такого же результата можно добиться, используя Javascript для того, чтобы делить пополам размеры изображений для Retina-экранов. С использованием библиотеки jQuery это выглядит так:

Где использовать: на сайтах с несколькими изображениями в контенте.

CSS (SCSS)

Также можно использовать изображение в качестве фона с необходимыми размерами (background-size) определенного div’а. Параметр background-size не поддерживается в IE 7 и 8.

Можно использовать псевдоэлементы :before или :after

Техника работает и при использовании спрайтов:

Где использовать: на сайтах с ограниченным количеством фоновых изображений (например одним в качестве спрайта).

HTML и CSS-масштабирование: плюсы

HTML и CSS-масштабирование: минусы

Определение плотности пикселей экрана

retina ready это что. Смотреть фото retina ready это что. Смотреть картинку retina ready это что. Картинка про retina ready это что. Фото retina ready это что
Возможно это самый популярный способ оптимизации графики для Retina-дисплеев. Используется CSS или Javascript.

В этом способе используется device-pixel-ratio, чтобы установить нужное соотношение между физическими и CSS-пикселями:

Где использовать: на сайтах или в приложениях, в которых применяется background-image для элементов дизайна. Не подходит для изображений внутри контента.

Плюсы

Минусы

Javascript

Того же результата можно добиться, используя window.devicePixelRatio:

Существует специальный Javascript плагин Retina.js, который умеет делать все вышеописанное, но с дополнительными возможностями, такими как пропуск внешних изображений и пропуск внутренних, но не имеющих retina-копий.

Где использовать: на любых сайтах с изображениями в контенте.

Плюсы

Минусы

Масштабируемая векторная графика

retina ready это что. Смотреть фото retina ready это что. Смотреть картинку retina ready это что. Картинка про retina ready это что. Фото retina ready это что
Вне зависимости от используемого метода растровые изображения по своей природе остаются ограниченными в масштабировании. Тут нам может помощь векторная графика. SVG (Scalable Vector Graphics) формат на основе XML поддерживается большинством браузеров. Самый простой способ использования SVG-изображений — в теге img или CSS-параметрами background-image и content:url().

В этом примере простое SVG-изображение может быть как угодно масштабировано:

То же самое получится с применением CSS:

Для поддержки IE 7 или 8 и Android 2.x потребуется использование заменяющих PNG-изображений. Это можно легко сделать с помощью Modernizr:

Для лучшей кроссбраузерности, чтобы избежать проблем растеризации в Firefox и Opera, следует сделать каждое SVG- изображение соответствующим его родительскому HTML-элементу.

В HTML можно реализовать аналогичное с помощью нужного data в теге a:

С использованием jQuery и Modernizr:

Где использовать: на любых сайтах, подходит для иконок, логотипов и простых векторных иллюстраций.

Плюсы

Минусы

Иконочные шрифты

retina ready это что. Смотреть фото retina ready это что. Смотреть картинку retina ready это что. Картинка про retina ready это что. Фото retina ready это что
Популярный благодаря Twitter Botstrap способ, заключается в замене букв в шрифте на нужные символы с последующим их отображением на странице с помощью CSS. Существует множество иконочных шрифтов с символами на любой вкус, но можно также создать свой с помощью Fontello, Font Builder или даже Inkscape.

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

А в стилях указывается нужный шрифт:

Таже можно использовать псевдоэлемент :before и параметр content с уникальным классом к каждой иконке:

Где использовать: на сайтах с большим количеством иконок и для быстрого прототипирования.

Плюсы

Минусы

Favicon

Взгляд в будущее

Но этот способ не распространяется на изображения внутри тега img.

Еще один инструмент — Picturefill, автор Scott Jehl. Это HTML и Javascript решение:

Несмотря на такую разметку, это вполне нормальное кроссбраузерное решение.

Еще одно амбициозное предложение — использование элемента picture, который позволяет использовать несколько адаптивных изображений, заменяющих друг друга в зависимости от размера и плотности пикселей экрана

Источник

Оптимизация сайтов под Retina-экраны

Сравнительно недавно на рынок активно стали входить дисплеи с увеличенной плотностью пикселей – это Retina дисплеи (на Apple девайсах) и их аналоги других производителей.

* Далее, да простят нас конкуренты Apple, чтобы не писать длинных фраз, все экраны с высокой плотностью пикселей объединим названием Retina.

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

Физические пиксели — самые мелкие элементы любого дисплея, каждый из которых имеет свою яркость и цвет.

Плотность пикселей — это количество физических пикселей на единицу площади (обычно пикселей на дюйм).

CSS-пиксели — некоторая браузерная величина, используемая для точного отображения контента и независящая от экрана.

Соотношение между физическими пикселями и виртуальными

Для лучшего понимания сразу представим это соотношение графически:

Т.е. блок, например, шириной 300x700px на Retina дисплеях будет размером уже 600x1400px. Аналогично любая растровая картинка будет масштабироваться и при этом терять качество:

Очевидная разница в качестве. Одна и та же картинка на стандартном дисплеи (слева) и на Retina-дисплеи (справа).

Оптимизация графики под Retina

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

Итак, мы решили, что нам необходимо оптимизировать графику под Retina. Как это сделать? Очевидно, что надо выдать картинку с требуемым разрешением. Есть несколько способов, рассмотрим их.

HTML и CSS масштабирование

Пожалуй, самый простой способ – это заранее подготовить картинки большего размера (требуемый размер, умноженный на 2). Так, например, чтобы показать лого размером 250x100px, надо загрузить картинку размером 500x200px и уменьшить его, используя CSS-свойства или HTML-атрибуты.

Можно просто задать атрибуты width и height для картинки:

То же самое можно получить, используя jQuery библиотеку:

Для изображений на фоне можно воспользоваться CSS-свойство background-size для нужного блока. Тут стоит учесть, что данное свойство не поддерживается в IE8 и ниже. Для поддержки IE есть фиксы, но они не всегда помогают.

Все три метода можно комбинировать в данном способе.

JavaScript

Аналогичный результат можно получить, воспользовавшись window.devicePixelRatio

На основе этого метода создан плагин Retina.js, который умеет делать все то же самое, но с дополнительными возможностями, такими как пропуск внешних изображений и пропуск внутренних, не имеющих retina-копий.

Серверный метод

Метод заключается в том, чтобы часть работы переложить на сервер. Т.к. сервер не знает, какое разрешение у монитора пользователя, ему надо помочь с помощью небольшого скрипта, которым, если значение dppx (точек на пиксель) больше 1.5, мы установим cookies.

SVG-графика

Тут стоит учесть, что SVG формат не поддерживается в IE8 и ниже. Для поддержки IE требуется подготовка заменяющих PNG-изображений. Реализуется это при помощи плагина Modernizr.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *