БесплатноБесплатный прототип ключевой страницы и черновик ТЗ при старте проекта

Адаптивные изображения: srcset и sizes на практике

Адаптивные изображения на 1С-Битрикс: srcset, sizes, WebP и ленивая загрузка в каталоге

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

Эта статья — практический разбор адаптивных изображений на 1С-Битрикс: как устроены атрибуты srcset и sizes, когда нужен тег picture, как подключить WebP и ленивую загрузку, как готовить варианты картинок штатным resize-модулем и что всё это даёт для Core Web Vitals. Скорость каталога — комплексная задача, поэтому по ходу мы затронем аудит и оптимизацию как способ найти, где именно теряется производительность.

Коротко

  • srcset даёт браузеру набор размеров, sizes подсказывает, какого размера картинка на странице; работают только вместе.
  • Для масштабирования одного фото хватает srcset; для смены формата или кропа нужен picture с source.
  • WebP и srcset складываются: один уменьшает пиксели, другой — вес; экономия максимальна вместе.
  • Варианты картинок в 1С-Битрикс готовит штатный resize с кэшем; ширину и высоту задают всегда, чтобы не было CLS.

Почему одна картинка на всех — это дорого

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

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

Как браузер выбирает изображение

Чтобы правильно писать srcset и sizes, нужно понимать логику браузера. Он учитывает два фактора: сколько места картинка займёт на странице и какова плотность пикселей устройства. Обычный экран имеет плотность 1, у современных смартфонов и «ретины» она выше — им для чёткости нужен файл с большим числом пикселей.

Браузер берёт из sizes предполагаемую ширину картинки на странице, умножает на плотность экрана и выбирает из srcset вариант, ближайший сверху к этому числу. Ключевой момент: решение принимается до полной загрузки страницы, на раннем этапе разбора HTML. Поэтому подсказки должны быть в разметке сразу и быть точными — если sizes врёт, браузер выберет неоптимальный файл.

Адаптивная вёрстка: один шаблон под все экраны ДесктопПланшетСмартфонОдна адаптивнаявёрстка под всеэкраны
Схема: вместо отдельного мобильного сайта — одна адаптивная вёрстка, которая перестраивает блоки под ширину экрана. Проще в поддержке, дешевле в развитии.

srcset: варианты по ширине

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

Несколько практических принципов:

sizes: подсказка о размере на странице

Без sizes атрибут srcset с дескрипторами w работает вполсилы: браузер по умолчанию считает, что картинка занимает всю ширину экрана, и часто грузит вариант крупнее нужного. sizes исправляет это, описывая, какого размера картинка будет при разной ширине вьюпорта.

Синтаксис — это условия по ширине экрана и соответствующие им размеры картинки, обычно в единицах вьюпорта или пикселях. Например, «на узких экранах картинка занимает половину ширины, на широких — четверть». Браузер читает это и точно рассчитывает, какой файл взять. Значения sizes должны соответствовать реальному CSS каталога: если по стилям на десктопе в ряду четыре товара, то и sizes должен отражать эту ширину. Расхождение верстки и sizes — частая причина того, что адаптивные картинки «не работают».

srcset и picture: когда что

Есть два инструмента адаптивных изображений, и путать их не стоит.

ЗадачаИнструментПример
Один снимок в разных размерахimg + srcset + sizesТоварное фото в сетке каталога
Разные форматыpicture + sourceWebP с запасным JPEG
Другой кроп для мобильныхpicture + source (media)Крупный план на телефоне, общий на десктопе
Смена содержания баннераpicture + source (media)Вертикальный баннер для мобильных

Правило простое: если меняется только размер одного и того же изображения — хватает img с srcset и sizes. Если меняется формат или само содержание (кроп, композиция) — нужен picture с несколькими source. В каталоге товаров подавляющее большинство случаев — первое, и усложнять там picture без нужды не стоит.

WebP и современные форматы

Оптимизация размера в пикселях через srcset — только половина дела. Вторая половина — вес файла при том же размере, и здесь помогают современные форматы. WebP при сопоставимом качестве весит заметно меньше привычных JPEG и PNG, а значит, страница грузится быстрее без потери в картинке.

Подключают WebP двумя способами: через picture с source type="image/webp" и запасным JPEG внутри, либо автоматической конверсией на стороне сервера с проверкой заголовков браузера. Второй путь удобнее для каталога: исходники хранятся как есть, а отдача в WebP происходит прозрачно там, где браузер это поддерживает. Важно оставлять запасной формат — не все окружения работают с WebP одинаково, и надёжность важнее пары процентов экономии. Эти оптимизации складываются с srcset: маленький по размеру и лёгкий по весу файл — идеал для мобильного каталога.

Ленивая загрузка и приоритеты

Каталог с сотнями картинок не должен грузить их все сразу — большую часть посетитель никогда не увидит, если не долистает. Ленивая загрузка через атрибут loading="lazy" откладывает загрузку изображений вне экрана до момента, когда они понадобятся. Это резко ускоряет первую отрисовку и экономит трафик.

Но есть важное исключение — главное изображение в верхней части экрана. Обычно это крупное фото товара или баннер, и именно оно чаще всего оказывается LCP-элементом — тем контентом, по загрузке которого измеряется скорость. Ему ленивую загрузку не ставят, наоборот — грузят приоритетно. Ошибка «ленивый LCP» встречается часто и заметно портит показатели: браузер откладывает как раз ту картинку, которую надо показать первой. Правильная расстановка приоритетов — ленивая загрузка для всего, кроме главного изображения экрана.

Резервирование места и CLS

Отдельная проблема — прыгающий макет. Пока картинка грузится, если для неё не зарезервировано место, контент под ней сдвигается в момент появления файла. Пользователь тянется нажать кнопку — и она уезжает. Эта метрика называется CLS (смещение макета) и входит в Core Web Vitals.

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

Генерация вариантов в 1С-Битрикс

Готовить несколько размеров руками нереально для каталога — их генерируют автоматически. В 1С-Битрикс для этого есть штатное масштабирование изображений (resize) через API и компоненты: из одного загруженного файла создаются превью нужных размеров, которые кэшируются на диске.

На этой основе строят srcset: заранее определяют набор ширин под сетку каталога, а resize по запросу генерирует и кэширует каждый вариант. Первое обращение создаёт файл, дальше он отдаётся из кэша — нагрузка на генерацию разовая. Логику удобно вынести в помощник шаблона, который принимает картинку и набор ширин, а возвращает готовые srcset и sizes. Как аккуратно организовать такой код в современной архитектуре, мы разбираем в статье про D7 и ORM в 1С-Битрикс, а вынос повторяющейся логики в отдельный компонент — в материале про разработку собственного модуля.

Внедрение пошагово

Перевести каталог на адаптивные изображения можно поэтапно, не переписывая шаблон целиком.

  1. Определите точки вывода. Сетка каталога, карточка товара, баннеры — где какие размеры картинок реально нужны.
  2. Задайте наборы ширин. Под каждую точку — три-четыре ширины, соответствующие верстке.
  3. Настройте resize. Автогенерация вариантов из исходников с кэшированием.
  4. Соберите помощник шаблона. Функция, которая по картинке и набору ширин отдаёт srcset и корректный sizes.
  5. Подключите WebP. Через picture или серверную конверсию с запасным форматом.
  6. Расставьте приоритеты. Ленивая загрузка для всего, кроме главного изображения экрана.
  7. Зафиксируйте размеры. Ширина и высота у всех img, единое соотношение сторон вариантов.

Влияние на Core Web Vitals

Адаптивные изображения бьют сразу по нескольким метрикам Core Web Vitals — набору показателей, которые поисковики используют для оценки удобства:

Изображения — обычно самая тяжёлая часть страницы каталога, поэтому их оптимизация даёт наибольший прирост скорости при относительно небольших усилиях. Но это часть общей картины: скорость зависит ещё от кэша, композитного вывода и инфраструктуры, о которой мы пишем в материале про хостинг для 1С-Битрикс.

Частые ошибки

Чек-лист и вывод

  1. srcset и sizes вместе. Каждая картинка каталога отдаёт набор ширин с корректной подсказкой размера.
  2. sizes соответствует CSS. Значения совпадают с реальной шириной картинки в верстке.
  3. WebP подключён. С запасным форматом для окружений без поддержки.
  4. Приоритеты расставлены. Ленивая загрузка везде, кроме главного изображения экрана.
  5. Размеры зафиксированы. Ширина и высота у всех img, единое соотношение сторон.
  6. Варианты генерирует resize. Автоматически из исходников с кэшированием.
  7. Проверено на метриках. LCP и CLS замерены до и после, эффект подтверждён.

Адаптивные изображения — одна из самых окупаемых оптимизаций скорости: относительно небольшая работа даёт заметный прирост, особенно на мобильных. Ключ — правильная связка srcset и sizes, соответствующая реальной верстке, современные форматы поверх неё, аккуратные приоритеты загрузки и зафиксированные размеры против прыжков макета. В 1С-Битрикс всё это опирается на штатный resize с кэшем, поэтому внедрение не требует ручной нарезки. Настройте адаптивные картинки — и каталог станет быстрее и для людей, и для поисковых систем. Продолжить тему стоит с материала про CI/CD и деплой для 1С-Битрикс, чтобы изменения в шаблон выкатывались безопасно.

Частые вопросы

В чём разница между srcset и sizes?

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

Когда использовать srcset, а когда тег picture?

srcset с sizes применяют, когда нужно отдать одно и то же изображение в разных размерах — это самый частый случай в каталоге. Тег picture нужен, когда меняется само содержание: другой кроп для мобильных (art direction) или разные форматы (WebP с запасным JPEG через source). Для простого масштабирования достаточно srcset, для смены формата или кадрирования — picture с несколькими source.

Нужен ли WebP, если уже есть srcset?

Да, это разные оптимизации, которые складываются. srcset уменьшает размер картинки в пикселях под устройство, а WebP уменьшает вес того же изображения за счёт лучшего сжатия. Вместе они дают максимальную экономию: маленький по размеру и лёгкий по весу файл. WebP подключают через тег picture с запасным JPEG или через автоматическую конверсию на стороне сервера с проверкой поддержки браузером.

Как готовить варианты картинок в 1С-Битрикс?

В 1С-Битрикс есть штатное масштабирование изображений (resize) через API и компоненты каталога: из одного загруженного файла генерируются превью нужных размеров с кэшированием. На этой основе строят srcset — заранее готовят набор ширин под сетку каталога. Ручная нарезка не нужна: варианты создаются автоматически при первом обращении и кэшируются, поэтому нагрузка на генерацию разовая.

Ленивая загрузка мешает адаптивным изображениям?

Нет, они прекрасно сочетаются. Ленивая загрузка (loading="lazy") откладывает загрузку картинок, которых пока нет на экране, а srcset выбирает правильный размер для тех, что грузятся. Важно одно исключение: главному изображению в верхней части экрана (LCP-элементу) ленивую загрузку не ставят — его, наоборот, грузят приоритетно, иначе пострадает показатель загрузки основного контента.

Что такое CLS и как изображения на него влияют?

CLS (Cumulative Layout Shift) — метрика смещения макета: когда контент прыгает во время загрузки. Изображения без заданных размеров — частая причина: пока файл грузится, для него нет места, а когда пришёл — страница дёргается. Лечится указанием ширины и высоты у тега img или соотношения сторон через CSS, чтобы браузер зарезервировал место заранее. Это простая, но важная часть Core Web Vitals.

Стоит ли делать отдельную мобильную версию ради картинок?

Обычно нет. Адаптивный шаблон с srcset и sizes отдаёт мобильным устройствам лёгкие картинки в рамках одной верстки — это проще в поддержке, чем отдельная мобильная версия. Отдельный мобильный сайт оправдан редко и создаёт двойную работу. Правильнее вложиться в адаптивный шаблон, оптимизацию изображений и при необходимости PWA поверх него, чем поддерживать две версии сайта.

Поделиться:

Хотите быстрый каталог без размытых и тяжёлых картинок?

Настроим адаптивные изображения, WebP и ленивую загрузку на вашем сайте 1С-Битрикс и поднимем Core Web Vitals. Рассчитаем работу по вашему проекту.

Аудит и оптимизация

Редакция B2Bsite

Команда B2Bsite. С 2014 года разрабатываем интернет-магазины и порталы на 1С-Битрикс: оптимизируем скорость, адаптивные шаблоны и Core Web Vitals для среднего и крупного бизнеса.

← Все статьи блога