Простой способ оптимизировать сайт для работы с Retina изображениями
особенности компоновки спрайтов (sprites)
Ни для кого не секрет, что количество устройств, поддерживающих высокое разрешение, aka retina
постоянно растет.
Планшеты, макбуки с ретиной, телефоны - у всех сверхчеткое разрешение, а ваш сайт все еще покрыт огромным количеством
пикселей. Не грустим, все что нам нужно сделать - создать новые картинки. И их размер должен быть ровно в 2 раза больше.
Простого способа переделать все графические элементы не существует. Я, конечно, надеюсь что для начала у вас все
еще есть оригинальные векторные изображения. Тем не менее, проблема кроется не в том, что вам придется создавать все
графические элементы заново. Проблема заключается в том, что вам потребуется поддерживать и старые устройства, для которых
не требуются детальные изображения. Более того, вы не можете изменять ширину или высоту div контейнеров
, содержащих
фоновые графические элементы, так как вы всего лишь получите большое изображение, пестрящее “огромными” пикселями.
Преобразуем ваши спрайты для работы с ретиной
Первая и самая важная вещь - графические элементы должны быть ровно в 2 раза больше в размере, для того, чтобы данный
способ сработал.
Пример верстки иконок.
|
|
Сопутствующие стили, которые потребуется добавить. Мы используем less
, о нем много информации в гугле ;)
|
|
Позиционируем иконки
|
|
Но все это базовые вещи. Теперь перейдем к интересному
Мы добавим @media
запрос, который будет ориентироваться только на экраны с retina дисплеем. Для них мы изменимbackground-image
для другого, который будет в 2 раза больше. Мы добавим суффикс @2x, чтобы организовать наши изображения.
После этого мы установим параметр background-size
, чтобы размер картинки совпал с размером спрайта для обычных машин или
половина ширины спрайта для ретины. Именно на этом этапе очень важно, что спрайт с ретиной ровно в 2 раза больше, чем
обычный спрайт. Иначе, картинки не будут отображаться правильно.
|
|
Вуаля, все готово
Теперь ваш сайт готов обслуживать девайсы с ретиной. Заметьте, что вы совершенно не использовали Javascript
, да и
вообще никакой магии.