В последнее время появился целый набор техник для работы с адаптивными изображениями. Я имею в виду решения, помогающие нам использовать нужное изображение в каждом конкретном случае, например, в зависимости от размера экрана и скорости соединения. Все они по способу работы немного отличаются. Для сравнения, Кристофер Шмитт (Christopher Schmitt) и я сделали
Вся информация есть в этой таблице, но давайте рассмотрим ее с точки зрения практических вопросов и таким образом как-то систематизируем.
Какая из техник подходит вам и вашему проекту, можно определиться, пройдясь по нижеследующим вопросам, используя их как руководство. Многое из этого может относиться к вашему проекту, вам нужно будет лишь определить, какая техника максимально отвечает вашим требованиям.
Имеется ли у меня уже существующий контент?
Что на самом деле означает: имеется ли у меня уже существующий контент, который непрактично обновлять? Например, у меня есть тысячи страниц с информацией по CSS трюкам, и только один человек, который этим всем занимается.
Даааа… Я точно не собираюсь идти и менять каждый тег <img> на этом сайте, так что мне нужна техника, которая избавит меня от этого.
Я знаю одну единственную технику, которая работает абсолютно без каких-либо изменений разметки, и это
Еще один вопрос, который нужно себе задать, это беспокоитесь ли вы вообще о существующем контенте. Может, львиная доля траффика вашего сайта идет с новых статей, в разметку которых вы можете внести изменения, и таким образом получить доступ к преимуществам других техник. Если это ваш случай, читайте дальше, что же это за преимущества.
Если у вас небольшой или новосозданный проект, или же вы можете пройтись по уже существующему содержимому и обновить его, то вам тоже доступны для выбора техники, требующие особой разметки, тогда тоже читайте дальше.
Волнует ли меня особая разметка?
На самом деле, это подпункт первого вопроса. Многие техники требуют использования специального HTML. К примеру, в случае
<img src="200x100.png" data-1x="400x200.png" data-2x="800x400.png">
Я бы сказал, что это чистая, валидная и семантичная техника, но из-за того, что нужно добавлять данные атрибуты в каждый <img> на сайте, она может быть недоступна на сайтах с большим количеством наличествующего контента.
Если вы знаете, что особая разметка (или специализированный CSS) вам не подходит, то на самом деле единственный вариант –
Волнует ли меня семантика?
Некоторые из техник для адаптивных изображений используют разметку, которая не является строго семантичной. Собственно, изображение семантично только в одном случае: src указывает на реальное изображение, а в alt содержится его описание. Брэд Фрост весьма емко высказался про это:
Перевод: Matt Stow: «@brad_frost IMO, фактические пиксели изображения не должны иметь значения. Пользователи все равно увидят картинку, а программы для чтения с экрана позволят услышать ее.» Brad_Frost: «@stowball К сожалению, всё не так просто. Изображение лошади должно быть именно изображением лошади, иначе это не изображение лошади».
Другими словами, если техника требует, чтобы src у изображения отсутствовал или содержал ссылку на прозрачный GIF (или что-то вроде того), это не семантично.
Так почему же тогда некоторые техники это используют? Потому что, если у вас есть <img>, и src указывает на изображение лошади, то это значит, что данное изображение начнет загружаться сразу же, как браузер до него доберется. И избежать этого не получится. Даже если вы супер быстро заменили src на более удобоваримый вариант, теперь загружаться будут два изображения вместо одного, что в итоге приводит к потерям производительности, а не наоборот. Вы можете придти к решению, что это вполне допустимо (к примеру, на настольных компьютерах, как правило, скорость выше). Обычно при использовании этой техники, в src указывается самое маленькое изображение.
Если семантика для вас важна, взгляните на
Некоторые из техник используют тэги <noscript> для постановки <img> в случае недоступности JavaScript, вам решать, насколько это семантично.
Нужна ли мне валидность?
Валидность в смысле «проходит ли валидацию?» в соотстветствие с
Если вы всё же беспокоитесь насчет валидности кода (возможно, клиент иррационально требует этого от вас, отказываясь иначе платить за работу), тогда вы не сможете использовать некоторые из техник. К примеру,
Если валидность кода вам необходима, я бы порекомендовал следующие техники:
Нужна ли возможность манипулирования изображениями?
Некоторые из техник адаптивных изображений отдают разные разрешения одного и того же изображения. Хотя это и упрощает задачу и уменьшает объем работы, иногда это может быть неприемлемо. Вот наглядный пример:
Слева исходный src, для мобильных устройств. В середине немного большее изображение, которое может быть использовано на планшетах, к примеру. Справа самое большое изображение.
Эти изображения сделаны вручную дизайнером, обрезаны так, чтобы сохранить значение и нужное впечатление. Если вы возьмете изображение справа и просто уменьшите его масштаб, то фигуры на нем будут очень мелкими и впечатление может быть потеряно.
Если эта возможность важна для вашего проекта, вам нужна техника, которая позволяет задать, какое именно изображение выдавать в каждом конкретном случае. И
<picture alt="description"> <source src="small.jpg"> <source src="medium.jpg" media="(min-width: 400px)"> <source src="large.jpg" media="(min-width: 800px)"> </picture>
После чего в работу вступает JavaScript.
Заботит ли меня JavaScript?
Для работы большинство обсуждаемых техник используют JavaScript.
А что насчет зависимости от библиотек JavaScript?
Волнует ли меня серверная часть?
Не все из обсуждаемых техник зависят исключительно от JavaScript.
Нужно ли мне тестирование скорости соединения?
Определение ширины окна браузера и принятие на основе этого решения о том, какой вариант изображения отдавать – это здорово и является фундаментальной идеей адаптивных изображений. Но на самом деле, это только половина того, на чем должно основываться это решение. Второй фактор – доступное соединение. Если у пользователя быстрый интернет, то совершенно нормально отдавать большие изображения. Если же скорость соединения очень низкая, независимо от размера экрана нужны изображения легче. К сожалению, не существует нативных
Две из существующих техник дополнительно осуществляют тест скорости для принятия решения:
Хочу ли я использовать сторонние сервисы?
Вы можете думать что-то вроде «Класс, Sencha.IO – действительно крутая штука, но меня беспокоит зависимость от стороннего сервиса. Вот бы я мог запустить ее на своем собственном сервере». Если хотите пойти по этому пути, к вашим услугам публичная
Еще из сторонних сервисов есть
А может используется CMS с особыми возможностями?
Допустим, у вас сайт на WordPress. У WordPress есть встроенный файловый загрузчик и когда вы загружаете изображение через него, с его помощью можно создать разные версии файла (уменьшенного размера). Это классный мощный инструмент, так что вы можете и должны использовать преимущество. Кейр Уитакер (Keir Whitaker) рассказывает об использовании этой возможности в своей статье
WordPress не единственная CMS, где это можно найти, я совершенно уверен, что данная концепция может быть реализована (или уже) в любой системе управления контентом.
Могу ли я подождать?
Все эти обсуждения и техники появились после выхода «нового IPad» (а именно, третьего). Его высокая плотность пикселей отлично подходит для векторной графики и больших фотографий, но, к примеру, маленькие иконки при увеличении до нужного размера могут выглядеть размыто. Делая на сайте иконки большего размера, замедляем его работу. Таким образом, нужно отдавать их только в тех ситуациях, когда это необходимо.
Мир веб-стандартов в курсе этой проблемы. Есть
Например, это может быть подстановка ссылок на изображение в src через
Источник: css-live.ru