Menu

Как выровнять картинку по центру в HTML и CSS

<img> это строчный элемент, поэтому он центрируется как текст: text-align: center у родителя. Или сделайте его блоком с margin: 0 auto, или центрируйте через flexbox или grid, в том числе по вертикали. Каждый способ работает вживую и измеряет результат.

На этой странице есть исполняемые редакторы: меняйте, запускайте и сразу видите результат.

Быстрый ответ: text-align у родителя

<img> это строчный элемент: он стоит в строке текста как слово. Поэтому его центрируют так же, как текст, через text-align: center у родителя:

Стиль задается div, а не изображению. text-align: center у самого <img> ничего не делает, потому что внутри изображения нет текста, который можно выровнять.

Способ 2: display block и margin auto

Если хотите оформлять само изображение, превратите его в блок и задайте автоматические боковые отступы. Свободное пространство с двух сторон делится поровну:

У серого изображения есть margin: 0 auto, но оно остается в начале строки: auto-отступы не действуют на строчный элемент. Недостающая деталь это display: block. max-width: 100% вместе с height: auto не дает изображению вылезать за узкий экран и сохраняет его пропорции.

Способ 3: flexbox или grid, в том числе по вертикали

Чтобы выровнять изображение по центру в обоих направлениях внутри блока, задайте блоку высоту и центрируйте его содержимое через grid или flexbox:

Эквивалент на flexbox: display: flex; justify-content: center; align-items: center;. В обоих случаях блоку нужна высота больше, чем у изображения, иначе центрировать негде. Те же способы центрируют любой элемент; все они сравниваются на странице выравнивание div по центру.

Картинка с подписью по центру

Фотографии с подписью место в <figure>. Центрируйте содержимое figure, и изображение с подписью выстроятся вместе:

Несколько картинок в ряд по центру

Ряд логотипов или миниатюр это задача для flexbox. justify-content: center центрирует группу, gap задает промежутки, а flex-wrap позволяет переносить на маленьких экранах, сохраняя центрирование:

Какой способ выбрать

СитуацияЧто использовать
Изображение в абзаце или простом блокеtext-align: center у родителя
Можно оформлять только изображениеdisplay: block; margin: 0 auto;
По центру в обоих направлениях внутри блокаGrid place-items: center (или flexbox) у блока
Ряд изображенийFlexbox с justify-content: center
Изображение с подписью<figure> с text-align: center
Фоновая картинка, а не содержимоеbackground-position: center, смотрите фоновое изображение

Старые способы и почему не стоит

В старых учебниках их все еще можно встретить:

<!-- obsolete: do not use -->
<center><img src="logo.png" alt="Logo"></center>
<img src="logo.png" alt="Logo" align="center">

<center> и атрибут align удалены из HTML. Браузеры все еще отображают <center> ради обратной совместимости, а align="center" у изображения даже не центрирует его по горизонтали: браузеры воспринимают это как вертикальное выравнивание в строке. Используйте один из способов CSS выше.

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

  • text-align: center у <img>. Задайте его родителю.
  • margin: 0 auto у строчного изображения. Добавьте display: block.
  • Вертикальное центрирование без высоты у родителя. Блок сжимается до изображения, и центрировать негде.
  • float: center. Такого значения нет. Float прижимает только к стороне.
  • Забытый alt. Изображению по центру все равно нужен альтернативный текст; alt="" только для чисто декоративных изображений.
  • Растянутое изображение. Если задать в CSS и width, и height с другим соотношением, оно искажается. Задайте одно из них и height: auto или добавьте object-fit: cover.

Часто задаваемые вопросы

Как выровнять картинку по центру в HTML?

Задайте text-align: center элементу, который ее содержит, например <p style="text-align: center;"><img src="logo.png" alt="Logo"></p>. Изображение по умолчанию строчное, поэтому центрируется как слово в тексте.

Как выровнять картинку по центру через margin auto?

Сначала сделайте изображение блоком: img { display: block; margin: 0 auto; }. Auto-отступы не центрируют строчные элементы, а изображение строчное, пока вы это не измените.

Как выровнять картинку по центру по вертикали и горизонтали?

Сделайте контейнер сеткой (или flexbox) с высотой: .box { display: grid; place-items: center; height: 300px; }. Изображение окажется посередине блока.

Можно ли центрировать картинку тегом <center> или align="center"?

Нет. <center> и атрибут align у <img> в HTML5 устарели. Браузеры все еще отображают <center> для старых страниц, но align="center" у изображения выравнивает его по вертикали в строке, а не по горизонтали. Используйте CSS.

Почему под картинкой по центру небольшой зазор?

Строчное изображение стоит на базовой линии текста, и под ним остается место для выносных элементов букв. Задайте изображению display: block или vertical-align: middle, и зазор исчезнет.

Coddy programming languages illustration

Учитесь программировать с Coddy

НАЧАТЬ