Ой, ничего не найдено!

К сожалению, по вашему запросу пока ничего нет (но это только пока!), зато вы можете подписаться на нашу замечательную email-рассылку, чтобы не пропустить самое интересное в будущем.

  • 560

Как использовать HTML5 <picture>, srcset и sizes для адаптивных изображений

  • 1 минута на чтение

В этом руководстве мы рассмотрим, что могут делать атрибуты srcset и sizes, как использовать их с элементами <img> или <picture>, и как выбрать подходящую комбинацию.

Элемент HTML <picture> предназначен для более универсальной и эффективной работы с адаптивными изображениями. Вместо загрузки одного изображения и попыток его изменения в соответствии с разными размерами экрана, тег <picture> загружает несколько изображений разных размеров и разрешений, выбирая лучшее для разных сценариев.

Как работает <picture>?

Он работает аналогично элементам <audio> и <video>, позволяя помещать несколько тегов <source> внутри родительского элемента <picture>, каждый из которых использует атрибуты srcset и sizes для указания различных файлов изображений и условий, при которых они должны загружаться.

Тем не менее, иногда элемент <picture> дает нам больше возможностей, чем нужно для достижения необходимой адаптивности. Иногда достаточно просто использовать обычный элемент <img>, используя атрибуты srcset и sizes внутри.

Что будет в этом руководстве

В этом руководстве мы разберем возможные путаницы. Мы увидим, что могут делать атрибуты srcset и sizes, как использовать их с элементами <img> или <picture>, и как узнать, какой вариант лучше выбрать.

1. Начните с обычного элемента <img>

Это наш исходный пункт – обычный элемент <img> с атрибутом alt для текстового описания.

Тестовый период
Оцените хостинг Siteko.net на своем проекте
Один бесплатный месяц поможет проверить панель, скорость и поддержку до оплаты следующего периода.
Открыть Siteko.net
<img src="image.png" alt="Описание изображения" />

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

img { max-width: 100%; height: auto; }

Это решает основную задачу, гарантируя, что изображение не будет слишком сильно искажено, но оно все равно будет одним и тем же для всех случаев, независимо от того, насколько хорошо (или плохо) это изображение работает.

2. Как использовать srcset для набора изображений

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

Именно для этого предназначен атрибут srcset: для набора изображений, а не одного изображения через атрибут src.

Переключение по ширине

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

Подключение за минуту
Попробуйте Siteko.net бесплатно в течение месяца
Проверьте хостинг на реальном сайте: скорость, стабильность и поддержка доступны сразу после подключения.
Начать бесплатно

Вы все равно будете использовать атрибут src при использовании srcset, так как он предоставляет изображение по умолчанию, которое браузер должен использовать, и служит запасным вариантом для старых браузеров, которые не поддерживают srcset.

Пример кода:

<img src="image-small.png" srcset="image-small.png 320w, image-medium.png 800w, image-large.png 1200w" alt="Описание изображения" />

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

Переключение по плотности пикселей

Вы также можете использовать srcset, чтобы загружать изображения в зависимости от их DPI, но вместо указания их ширины нужно указать их плотность пикселей в виде [density]x:

<img src="image-defaultdpi.png" srcset="image-hidpi.png 2x, image-higherdpi.png 4x" alt="Описание изображения" />

Однако нельзя использовать плотность пикселей и ширину в одном атрибуте srcset, и нельзя использовать спецификации плотности пикселей с атрибутом sizes, который мы рассмотрим далее.

Старт без оплаты
Месяц хостинга бесплатно для новых проектов
Разместите сайт, проверьте скорость и оцените удобство Siteko.net. Просто выберите тариф и начните тестовый месяц.
Посмотреть тарифы

3. Использование sizes для управления макетом изображения

Атрибут sizes позволяет указать ширину для макета изображения. Это отдельная концепция от реальных ширин изображений, указанных в атрибуте srcset. Ширина, указанная в sizes, связана только с макетом и может рассматриваться как создание пустых мест, в которые браузер может вставить изображения из srcset.

Пример кода:

<img src="image-small.png" srcset="image-small.png 320w, image-medium.png 800w, image-large.png 1200w" sizes="80vw" alt="Описание изображения" />

В этом примере браузер все равно будет выбирать между маленькими, средними и большими изображениями в зависимости от размера экрана, но выбранное изображение будет отображаться на ширину 80vw.

Добавление условий медиа

Вы можете добавлять условия медиа для изменения макета изображения. Например, можно изменить макет изображения, если ширина экрана составляет не менее 60rem:

<img src="image-small.png" srcset="image-small.png 320w, image-medium.png 800w, image-large.png 1200w" sizes="(min-width: 60rem) 80vw, 100vw" alt="Описание изображения" />

Вы также можете добавить другие размеры и условия медиа, например:

Подключение за минуту
Попробуйте Siteko.net бесплатно в течение месяца
Проверьте хостинг на реальном сайте: скорость, стабильность и поддержка доступны сразу после подключения.
Начать бесплатно
<img src="image-small.png" srcset="image-small.png 320w, image-medium.png 800w, image-large.png 1200w" sizes="(min-width: 60rem) 80vw, (min-width: 40rem) 90vw, 100vw" alt="Описание изображения" />

4. Когда использовать тег <picture>

Кроме обсуждения srcset и sizes, может возникнуть интерес к элементу <picture> и тому, как он вписывается в картину.

Использование "направления изображения"

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

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

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

Пример кода:

Старт без оплаты
Месяц хостинга бесплатно для новых проектов
Разместите сайт, проверьте скорость и оцените удобство Siteko.net. Просто выберите тариф и начните тестовый месяц.
Посмотреть тарифы
<picture> <source media="(orientation: landscape)" srcset="image-small.png 320w, image-medium.png 800w, image-large.png 1200w" sizes="(min-width: 60rem) 80vw, (min-width: 40rem) 90vw, 100vw" /> <source media="(orientation: portrait)" srcset="image-small-portrait.png 160w, image-medium-portrait.png 400w, image-large-portrait.png 600w" sizes="(min-width: 60rem) 80vw, (min-width: 40rem) 90vw, 100vw" /> <img src="image-small.png" alt="Описание изображения" /> </picture>

5. Как использовать <picture>

Элемент <picture> не является самостоятельным; он предназначен для обертки элемента <img> и одного или нескольких элементов <source>. Цель <source> элементов – предоставить браузеру дополнительную информацию для выбора подходящего файла и размера для отображения через <img>.

Чтобы соответствовать требованиям элемента <picture>, элемент <img> должен быть его непосредственным дочерним элементом и не должен иметь свои собственные атрибуты srcset и sizes. Вместо этого эти функции передаются элементам <source>. Элемент <img> также должен иметь атрибуты src и alt.

Пример кода:

<picture> <source srcset="image-small.png 320w, image-medium.png 800w, image-large.png 1200w" sizes="(min -width: 60rem) 80vw, (min-width: 40rem) 90vw, 100vw" /> <img src="image-small.png" alt="Описание изображения" /> </picture>

6. Поддержка браузерами элемента <picture>

Элемент <picture> хорошо поддерживается в современных браузерах, включая Google Chrome, Firefox, Safari, Edge и Opera. Старые браузеры, которые не поддерживают элемент <picture>, просто проигнорируют его, и в этом случае отображается стандартное изображение, указанное в элементе <img>.

7. Полезные ресурсы

Заключение

Теперь вы знаете, как эффективно использовать элемент <picture>, атрибуты srcset и sizes для создания адаптивных изображений. Эти инструменты помогут улучшить производительность вашего веб-сайта и предложить лучший пользовательский опыт за счет загрузки наиболее подходящих изображений в зависимости от различных условий экрана.

Старт без оплаты
Месяц хостинга бесплатно для новых проектов
Разместите сайт, проверьте скорость и оцените удобство Siteko.net. Просто выберите тариф и начните тестовый месяц.
Посмотреть тарифы

Первый месяц бесплатно

Хостинг Siteko.net для стабильного запуска сайта

Разместите проект на Siteko.net и проверьте скорость, панель управления и поддержку без стартовой оплаты.

  • 1 месяц бесплатно для новых клиентов сразу после выбора тарифа.
  • Быстрый старт для лендинга, блога или корпоративного сайта.
  • Поддержка рядом поможет с переносом и настройкой проекта.
Выбрать тариф