Как убрать сдвиги вёрстки из-за логотипа SVG
Зарезервируйте место для логотипа SVG атрибутами ширины и высоты или пропорцией CSS. Сравните смещения в браузере, затем проверьте изображение и адаптивную вёрстку.
На этой странице
Логотип SVG может оставаться чётким и при этом сдвигать соседнее содержимое при появлении. Для внешнего SVG, загружаемого через HTML-элемент изображения, дайте браузеру достаточно размерных данных, чтобы зарезервировать его область до получения внутренних размеров файла. Согласованные атрибуты width и height — полезная отправная точка; затем CSS может сделать область адаптивной.
Это исправляет проблему вёрстки страницы. Контуры логотипа не меняются, а пустое пространство внутри его холста не исчезает. Сохраняйте пригодный векторный оригинал. Если источник — только PNG или JPG, отдельно восстановите редактируемый рисунок, затем выделите готовому SVG продуманное место на странице.
Различайте рисунок и зарезервированную область
Проверьте три связанных размера:
| Элемент | Что он описывает | Где проверить |
|---|---|---|
| Рисунок SVG и viewBox | Прямоугольник исходных координат и рисунок внутри него | Исходный SVG или векторный редактор |
| Естественные размеры или пропорции загруженного изображения | Данные, получаемые браузером из изображения | Загруженный элемент изображения |
| Область HTML-вёрстки | Место, которое страница выделяет изображению | Вычисленные стили и границы элемента |
viewBox="0 0 300 100" описывает исходный прямоугольник с пропорцией 3:1. Для внешнего файла эти данные находятся внутри ресурса, который страница должна загрузить. Это отличается от задания соответствующей пропорции в окружающем HTML до получения ресурса.
Справочник MDN по элементу изображения рекомендует использовать оба атрибута — ширину и высоту — для выделения места до загрузки изображения. Рекомендации Google по сдвигам вёрстки также называют отсутствие размеров изображений частой причиной смещения и описывают резервирование места размерами или пропорцией CSS.
Если проблема в том, как рисунок вписывается в уже заданную область просмотра, используйте отдельное руководство по вписыванию SVG с сохранением пропорций. Резервирование области и вписывание в неё рисунка — разные проверки.
Начните с согласованных атрибутов ширины и высоты
Для знака с пропорцией 3:1 простой вариант размещения выглядит так:
<img
class="brand-logo"
src="/assets/brand-logo.svg"
width="300"
height="100"
alt="Example brand"
>.brand-logo {
display: block;
width: 300px;
max-width: 100%;
height: auto;
}Атрибуты задают предполагаемую пропорцию. CSS устанавливает отображаемую ширину и разрешает пропорциональное уменьшение при сужении контейнера. Они не требуют, чтобы логотип на каждом устройстве занимал 300 физических пикселей экрана.
Используйте размеры реального холста изображения, включая намеренно оставленные свободные поля. Не указывайте границы видимых букв, если у передаваемого SVG исходный прямоугольник шире. Такое несоответствие приводит к расхождению предварительно зарезервированной области и загруженного ресурса.
Совпадение значений важно: естественная пропорция изображения может начать действовать после загрузки. Неверная первоначальная пропорция всё ещё способна вызвать последующую коррекцию размера. После замены логотипа проверяйте и разметку, и передаваемый файл: сохранение имени файла не означает сохранения геометрии.
Используйте пропорцию CSS, когда место задаёт компонент
Пропорция CSS полезна, когда компонент определяет область конкретной формы. Для пропорционального изображения 3:1:
.brand-logo {
display: block;
width: 300px;
max-width: 100%;
height: auto;
aspect-ratio: 3 / 1;
}Справочник MDN по aspect-ratio объясняет, что свойство участвует в автоматическом расчёте размеров. Хотя бы один размер должен оставаться автоматическим, чтобы предпочтительная пропорция влияла на эти вычисления. Если ширина и высота обе фиксированы, сначала проверьте именно эти явно заданные размеры.
Выберите нужное поведение при несовпадении пропорций источника. Области постоянной формы могут потребоваться собственная обёртка и явно выбранное правило вписывания изображения. Для пропорционального логотипа обычно нужна верная пропорция источника. Не втискивайте квадратный логотип в геометрию 3:1 предыдущей надписи лишь ради сохранения старого CSS.
Форма auto 3 / 1 имеет другое значение: она может задавать предварительную пропорцию замещаемого элемента, а после получения данных использовать естественную. Это полезно, когда предварительная и итоговая пропорции совпадают; гарантии отсутствия смещений при противоречащих размерах она не даёт.
Что показал наш контролируемый пример в браузере
Мы создали собственный SVG размером 300 × 100 со знаком F, точкой и стрелкой. У трёх HTML-элементов изображений изначально не было URL источника. Затем кнопка после первой вёрстки назначала всем трём один локальный SVG. Так можно наблюдать состояние до и после, не выдавая его за измерение медленной сети.
Все три использовали ширину CSS 300px и автоматическую высоту. У одного пропорция не была зарезервирована, у второго были width="300" height="100", у третьего — aspect-ratio: 3 / 1.
| Случай | Высота изображения до | Высота изображения после | Смещение следующего текста |
|---|---|---|---|
| Без зарезервированной пропорции | 0px | 100px | 100px вниз |
| Согласованные размеры HTML | 100px | 100px | 0px |
| Согласованная пропорция CSS | 100px | 100px | 0px |

Верхняя координата текста изменилась с 358.1875 на 458.1875 в случае без резервирования. В двух случаях с резервированием она осталась 458.1875. Каждое загруженное изображение сообщало естественные размеры 300 × 100, и его отображаемые ширина и высота также оставались 300 × 100.
Это реальные измерения положения элементов на одной контролируемой странице в одном браузере. В эксперименте URL назначался вручную. Мы не записывали трассировку с ограничением скорости сети, оценку Core Web Vitals или поведение разных браузеров. В частности, смещение 100px — расстояние, а не оценка CLS.
Проверяйте готовый компонент, а не только файл
Проверяйте исправление в реальном месте размещения логотипа:
- Подтвердите источник. Откройте передаваемый SVG и проверьте пропорцию холста. Сохраните неизменённый мастер для сравнения.
- Проверьте предварительные размеры. Убедитесь, что HTML или CSS задаёт нужную область до получения размеров изображения.
- Сравните положения элементов. Следите за соседним заголовком или пунктом навигации, а не только за чёткостью логотипа.
- Проверьте после загрузки. Сравните итоговые ширину, высоту и пропорции с зарезервированной областью.
- Попробуйте узкие и широкие контейнеры. Убедитесь, что адаптивные правила уменьшают знак пропорционально и сохраняют удобство соседних элементов управления.
Для проверки загрузки в браузере перезагрузите настоящую страницу с отключённым кэшем и подходящими сетевыми настройками в инструментах разработчика. Это проверяет другие условия, чем наш пример с кнопкой. Если страница использует отложенную загрузку изображения, прокрутите и к этому месту.
Если смещение осталось, выясните, что изменилось в этот момент. Подмена шрифта, вставленный баннер, увеличивающаяся строка навигации или другое изображение способны сдвинуть логотип даже при стабильности его собственной области. Руководство web.dev различает размеры изображений и другие причины сдвигов; резервирование места одного логотипа не заменяет полный аудит производительности сайта.
Разделяйте смежные проблемы SVG
Неизменная область изображения с небольшой полосой под ней может быть проблемой строчной текстовой строки. Проверьте отображение и вертикальное выравнивание отдельно от зарезервированных размеров изображения. Перемещение элемента внутри строки и выделение места ещё недоступному изображению относятся к разным моментам вёрстки.
Если SVG сохраняет положение, но показывает широкие пустые поля, проверьте холст или вписывание. Обрезка источника для удаления полей меняет пропорцию, поэтому после неё обновите резервирование на странице. Объяснение встроенного SVG и изображения также поможет понять, стилизуете ли вы элементы документа или внешнее изображение.
Если исходный знак существует только в пикселях, используйте векторизатор логотипов PerfectVector для подготовки редактируемых фигур-кандидатов. Сравните силуэт и отверстия с источником, прежде чем выбирать холст передаваемого файла; карта оценки качества трассировки описывает такую проверку геометрии. Векторизация не задаёт размеры HTML, пропорцию CSS или поведение загрузки на сайте.
Частые вопросы
Предотвращает ли viewBox SVG сдвиги вёрстки сам по себе? У внешнего изображения viewBox находится внутри загружаемого ресурса. Дайте HTML-вёрстке согласованные размерные данные, чтобы зарезервировать место до получения внутренних размеров изображения, затем проверьте итоговый компонент.
Может ли логотип SVG оставаться адаптивным с атрибутами ширины и высоты? Да. Согласованные атрибуты могут задавать предполагаемую пропорцию, пока CSS управляет отображаемой шириной и оставляет высоту автоматической. Проверьте, сохраняют ли передаваемый файл и адаптивные правила эти пропорции.
Гарантирует ли чёткий SVG хорошую оценку CLS? Нет. Чёткость описывает отрисовку рисунка. CLS касается нестабильности вёрстки всей страницы, в которой также участвуют шрифты, вставленное содержимое и другие медиа. Расстояние смещения из контролируемого примера не является оценкой CLS.
Источники
- web.dev — Оптимизация Cumulative Layout Shift — Отсутствие размеров изображений, резервирование места, другие причины смещения и различие между движением и метрикой CLS.
- MDN — HTML-элемент изображения — Атрибуты ширины и высоты, естественные размеры изображения и его размещение.
- MDN — aspect-ratio — Автоматический расчёт размеров и различие между заданной пропорцией и формой auto с пропорцией.
Есть только растровый логотип? Подготовьте редактируемый SVG с PerfectVector, проверьте контуры и холст, затем зарезервируйте соответствующее место на странице, которая будет его показывать.
Ещё из блога

Уберите зазор под встроенным SVG с помощью CSS
Определите, относится ли зазор под SVG к строке HTML или рисунку. Выберите блочный вывод либо выравнивание inline и проверьте результат.

Логотип SVG в тёмной теме: кто управляет цветом
Выберите, следует ли логотип SVG предпочтению пользователя или теме страницы. Сравните встроенный CSS, адаптивный внешний файл и фиксированный рисунок в браузере.
