Гид по технологиям

Как центрировать изображение с помощью CSS

4 min read Веб-разработка Обновлено 10 Apr 2026
Центрирование изображения в CSS — 3 способа
Центрирование изображения в CSS — 3 способа

Человек работает за ноутбуком, на экране несколько изображений

Кратко: для горизонтального центрирования изображений чаще всего используют margin: auto на блочном элементе или flexbox на контейнере. Для вертикального центрирования применяют flexbox, grid или transform с абсолютным позиционированием. Ниже — несколько рабочих приёмов, варианты для адаптивного дизайна, тесты и контрольный чеклист.

Почему это важно

Центрирование изображений делает интерфейс аккуратным и читаемым. “Центрирование” в этом тексте означает выравнивание по горизонтали или/и по вертикали внутри родителя.

1. Используйте свойство margin

Это самый простой и распространённый способ для горизонтального центрирования. Идея: сделать элемент блочным и задать ему фиксированную или процентную ширину, затем поставить одинаковые боковые отступы auto.

Пример CSS:

img.center {
    display: block;
    margin-left: auto;
    margin-right: auto;
    width: 800px;
}

Коротко: display: block; превращает img в блочный элемент. margin-left/right: auto распределяет оставшееся пространство поровну.

Важно: если ширина изображения 100% или не задана, margin: auto по горизонтали может не сработать ожидаемо. В таких случаях задайте max-width или используйте другой метод.

2. Используйте Flexbox на контейнере

Flexbox чаще используют, когда нужно центрировать как по горизонтали, так и по вертикали, или когда внутри контейнера несколько элементов.

HTML:

CSS:

div.center {
    display: flex;
    justify-content: center; /* центр по горизонтали */
    align-items: center;     /* центр по вертикали */
    /* при необходимости задайте высоту контейнера */
}

Flexbox прост в использовании и отлично работает в адаптивной верстке.

3. Тег center (устаревший)

Тег

устарел и не рекомендуется. Он работает в старых браузерах, но нарушает разделение семантики и стилей.

Пример (не рекомендуется):

Используйте этот приём только в очень редких, совместимых с наследием, случаях.

Дополнительные рабочие методы

text-align для inline-элементов

Если img остаётся inline (или inline-block), можно центрировать его с помощью text-align на родителе:

.parent { text-align: center; }
.parent img { display: inline-block; }

Это удобно для строковых изображений и иконок.

CSS Grid

Grid позволяет легко центрировать элемент в двух осях:

.grid { display: grid; place-items: center; }

Абсолютное позиционирование + transform

Для точного центрирования относительно родителя:

.parent { position: relative; }
.img { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); }

Этот метод хорош для наложений (overlay), но требует контроля размеров и потерь потока документа.

Когда метод может не сработать

  • margin: auto не центрирует, если элемент уже занимает всю ширину родителя (width:100%).
  • text-align центрирует только inline/inline-block, а не блочные элементы.
  • Абсолютное позиционирование удаляет элемент из потока, что может сломать адаптивность.
  • Устаревшие теги работают непредсказуемо в современных проектах.

Адаптивность и retina-изображения

  • Используйте max-width: 100%; height: auto; чтобы изображения масштабировались внутри контейнера.
  • Для современных дисплеев применяйте srcset и picture для разных плотностей пикселей.

Пример адаптивного правила:

img.responsive { display: block; margin: 0 auto; max-width: 100%; height: auto; }

Контроль качества: тесты и критерии приёмки

Критерии приёмки:

  • Изображение центрируется по горизонтали в широкой и узкой вёрстке.
  • При изменении ширины окна изображение не выходит за пределы контейнера.
  • Для вертикального центрирования: изображение выравнивается по центру при заданной высоте контейнера.
  • Поведение одинаково в современных браузерах (Chrome, Firefox, Safari, Edge).

Тесты:

  • Откройте страницу в мобильном и десктопном размерах.
  • Изменяйте размеры контейнера и проверяйте перерасчёт положения.
  • Проверяйте с разными атрибутами width и без них.

Чеклист для разработчика и дизайнера

  • Определить, нужен ли горизонтальный или вертикальный центр.
  • Решить, будет ли изображение блочным или inline.
  • Выбрать метод: margin, flex, grid, text-align, absolute.
  • Проверить адаптивность: max-width, srcset.
  • Протестировать в основных браузерах и на мобильных.

Быстрая шпаргалка (cheat sheet)

  • Простое горизонтальное центрирование: display: block; margin: 0 auto;
  • Центр по обеим осям: display: flex; justify-content: center; align-items: center;
  • Центр в Grid: display: grid; place-items: center;
  • Точная центровка в overlay: position: absolute; left:50%; top:50%; transform: translate(-50%,-50%);

Ментальная модель

Думайте о контейнере как о коробке. Центрирование — это распределение свободного пространства внутри коробки вокруг элемента. Если пространство не “свободно” (элемент занимает всю ширину), нужно менять размеры или использовать другой метод.

Примеры, когда лучше не центрировать

  • Галереи с каруселями: изображения часто выравнивают по левой границе для предсказуемости навигации.
  • Текстовые блоки: иногда визуально лучше выравнивать по левому краю для лучшей читабельности.

Важно: всегда думайте про семантику и доступность. Центрирование — визуальная операция. Не используйте устаревшие теги ради оформления.

Decision flow (как выбрать метод)

flowchart TD
    A[Нужно центрировать изображение?] --> B{По горизонтали или по вертикали или оба?}
    B -->|Горизонтально| C{Изображение inline?}
    C -->|Да| D[text-align на родителе]
    C -->|Нет| E[display:block + margin:auto]
    B -->|Оба| F{Есть доступ к контейнеру?}
    F -->|Да| G[Использовать flexbox или grid]
    F -->|Нет| H[Абсолютное позиционирование + transform]

Короткое резюме

Мы рассмотрели три основных способа центрирования изображений: margin:auto для простого горизонтального центрирования, flexbox для центрирования в обеих осях и устаревший тег center, который использовать не следует. Также показаны альтернативы: text-align, grid и абсолютное позиционирование.

Применяйте margin:auto для одиночных изображений, flexbox/grid для сложных макетов и overlay — для наложений. Всегда проверяйте адаптивность и поведение в разных браузерах.

Краткий глоссарий

  • flexbox: модуль CSS для выравнивания элементов в строках и столбцах.
  • grid: модуль CSS для двухмерной раскладки.
  • inline/block: типы отображения элементов в модели CSS.
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Папка автозагрузки Windows — найти и управлять
Windows

Папка автозагрузки Windows — найти и управлять

Отключить исчезновение окон в macOS Sonoma
macOS

Отключить исчезновение окон в macOS Sonoma

Отключить клавишу Globe на Mac
macOS

Отключить клавишу Globe на Mac

Отключить миниатюры скриншотов на Mac
macOS

Отключить миниатюры скриншотов на Mac

RAW в JPEG на Mac — через Preview
Фото

RAW в JPEG на Mac — через Preview

Удалить фон с фото на Mac — быстро и без программ
macOS

Удалить фон с фото на Mac — быстро и без программ