Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как отцентрировать элемент

Короткий ответ

Включите flexbox на родителе и выровняйте по обеим осям:

<style>
  .stage { display: flex; justify-content: center; align-items: center; height: 120px; background: whitesmoke; }
</style>
 
<div class="stage">
  <div style="padding: 8px 16px; background: gold;">Centered</div>
</div>

justify-content двигает содержимое по главной оси (по горизонтали), align-items — по поперечной (по вертикали).

Самый короткий вариант на grid

В grid обе оси выравнивает одно свойство place-items:

<div style="display: grid; place-items: center; height: 120px; background: honeydew;">
  <button>Sign up</button>
</div>

Блок по горизонтали

Блоку с заданной шириной достаточно автоматических отступов слева и справа:

<div style="width: 200px; margin: 0 auto; padding: 8px; background: lavender;">A centered block</div>

Текст внутри блока

Текст и строчные элементы выравнивает text-align:

<p style="text-align: center;">Centered text</p>

Частая ошибка

Центрирование по вертикали «не работает», если у родителя нет высоты: блок высотой ровно в содержимое центрировать некуда. Задайте родителю height или min-height, как в примерах выше. Вторая частая путаница — text-align: center на блоке: он центрирует текст внутри, а не сам блок.

Функции из этого ответа

  • justify-content — Распределяет элементы вдоль главной оси flex- или grid-контейнера.
  • align-items — Выравнивает элементы поперёк главной оси — в ряду это по вертикали.
  • place-items — Задаёт `align-items` и `justify-items` сразу.
  • margin — Внешний отступ элемента — расстояние до соседей.
  • text-align — Выравнивание текста и строчного содержимого внутри блока по горизонтали.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.