Перейти к основному содержимому

Изображения

Использование графики делает веб-страницы визуально привлекательнее. Изображения помогают лучше передать суть и содержание документа. Тег <img> предназначен для разметки изображений в различных графических форматах.

<img
src="https://images.pexels.com/photos/67112/pexels-photo-67112.jpeg"
alt="Macbook Air на сером деревянном столе"
width="400"
/>
  • src="путь" - обязательный атрибут, указывает адрес изображения. Путь к картинке может быть абсолютным или относительным.
  • alt="описание" - обязательный атрибут, альтернативное описание.
  • width="значение" и height="значение" - задают размеры изображения в пикселях. Без задания размеров изображение отображается на странице в оригинальном размере. Если задать только одну величину, браузер автоматически вычислит другую для сохранения пропорций.

Атрибут alt

Необходим для предоставления значимой информации для пользователей, которые не могут видеть изображение (слабовидящие), или если изображение не загрузилось. Альтернативный текст должен быть в каждом теге <img>.

  • В описании должно быть законченное, полностью сформированное предложение.
  • Альтернативный текст должен отвечать на вопрос «Что изображено на картинке?».
  • Описание должно быть уникальным и не повторять то, что уже есть в тексте к этому изображению.
  • В описании не нужно использовать слова «изображение», «картинка» или «илюстрация», это само собой понятно.

Если в тексте страницы описывается история этих котят, достаточно будет следующего описания.

<img src="kittens.jpg" alt="Котята" />

В случае когда у нас просто галерея изображений, без какого-то текстового описания, необходимо уточнить что именно изображено.

<img
src="kittens.jpg"
alt="Три котёнка играют на соломе. Два серых и один чёрный."
/>

Изображение-ссылка

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

Для создания изображения-ссылки оборачиваем тег <img> в ссылку.

<a href="https://www.pexels.com/photo/animals-sweet-cat-kitty-57416/">
<img
src="https://images.pexels.com/photos/57416/cat-sweet-kitty-animals-57416.jpeg?w=640"
alt="Рыжий кот"
width="640"
/>
</a>

Изображение с подписью

Такая задача часто встречается в статьях, где много изображений с пояснением под или над картинкой, например иллюстрации, графики или диаграммы. Если необходимо разметить изображение с подписью, можно использовать теги <img> и абзац <p>. Но, именно для таких задач, есть семантические теги <figure> и <figcaption>.

Внутрь <figure> помещаем разметку изображения и описания. Тег <figcaption> обязательно должен быть первым или последним ребёнком <figure>.

<figure>
<!-- Произвольный графический контент: фотография, график, диаграмма и т. п. -->
<img src="адрес изображения" alt="альтернативный текст" />
<figcaption>Текст пояснения который будет под изображением</figcaption>
</figure>

Абсолютные и относительные пути

Веб-сайты содержат множество файлов, которые размещают в отдельные папки, чтобы ими было легче управлять. Для того, чтобы создать связь между разными файлами, например в HTML-документе подключить изображение или файл стилей, используются абсолютные или относительные пути, описывающие расположение подключаемого файла.

Абсолютный путь

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

https://images.pexels.com/photos/583842/pexels-photo-583842.jpeg

Абсолютные адреса состоят минимум из трёх частей: протокол, имя сервера и путь к файлу.

  • https:// - протокол.
  • images.pexels.com - имя сервера.
  • /photos/583842/pexels-photo-583842.jpeg — путь к файлу изображения, где «photos» и «583842» имена папок. Папка «583842» вложена в «photos».
Интересно

Например, при клике на ссылку с таким адресом, в браузере откроется вкладка с изображением, которое лежит где-то на сервере в интернете.

Относительный путь

Описывает путь к ресурсу относительно текущего файла. Используется для составления путей к изображениям, файлам стилей или создания навигации на другие страницы сайта, который вы создаёте.

Возьмём стандартную структуру файлов и папок проекта.

Структура файлов проекта

Для того, чтобы в index.html достучаться до изображения логотипа из папки images, в атрибуте src нужно указать относительный путь, то есть относительно HTML-документа.

<a href="">
<img src="images/logo.png" alt="Логотип сайта" />
</a>

Символ / обозначает переход на один уровень ниже. Такой путь браузер буквально понимает как: «В папке images, на одном уровне с текущим файлом index.html, взять файл logo.png».

В будущем необходимо будет подключать изображения в файле стилей. Для того, чтобы в файле styles.css достучаться до изображения логотипа из папки images, необходимо указать относительный путь (относительно файла-стилей).

background-image: url('../images/logo.png');

Последовательность символов ../ обозначает переход на одну папку (уровень) выше. Такой путь браузер буквально понимает как: «Перейти на одну папку выше (назад), зайти в папку images и взять в ней файл logo.png».

Графические форматы

Форматы изображений

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

Растровая графика

Растровая графика (raster, bitmap) - описание графического файла в виде массива с координатами каждого пикселя и описанием цвета этого пикселя. Как карта цветов с фиксированным размером.

Самые популярные растровые форматы изображений:

  • JPEG - большие файлы не требующие прозрачного фона или анимации. Этот формат идеален для красочных фотореалистичных фотографий, так как они могут содержать миллионы цветов.
  • PNG - в отличие от JPEG, имеет дополнительный параметр для описания прозрачности (альфа канал). Подходит для изображений, фон которых должен быть прозрачный или одноцветный. Используется для иконок и декоративных элементов. Также используется для изображений повышенной точности - скриншотов, чертежей, графиков и т. п.
  • webP - формат заменяющий PNG и JPEG, но еще с неполной поддержкой в браузерах. При равном качестве изображения, сжатые файлы будут меньше PNG и JPEG в среднем на 25%.
Полезно

Отличить растровое изображение довольно просто, достаточно увеличить его масштаб. В определённый момент изображение начнёт размываться, и появятся квадраты (пикселизация).

Векторная графика

Векторная графика (SVG, Scalable Vector Graphics) - описывается в виде правил или уравнений, определяющих линии, а также дополнительные свойства, цвет линий и фон для фигур.

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

Внимание

С векторной графикой будем детально знакомиться в отдельном занятии.

Оптимизация изображений

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

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

Внимание

Оптимизация изображения делается один раз. Экспортированное из макета изображение оптимизируется и только после этого добавляется в проект.

Прогрессивный JPEG

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

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

Базовый JPG загружающийся полосами сверху вниз

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

Прогрессивный JPG загружающийся слоями

С точки зрения пользователя, прогрессивный JPEG обеспечивает гораздо более приятный опыт посещения страницы. Пользователь сразу получает полное представление о содержимом страницы.

Создание

Для того, чтобы сделать прогрессивное JPEG-изображение достаточно воспользоваться специальными инструментами, в том числе онлайн. Например, при оптимизиации JPEG-изображений в Squoosh, они по умолчанию (автоматически) превращаются в прогрессивные.

Интересно

Вес файла прогрессивного JPEG-изображения обычно немного меньше его базового JPEG-аналога.