Глиф Учебники

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

Справочник · HTML и CSS · 2 минуты чтения

Способ зависит от того, что центрировать: текст внутри блока или сам блок, и нужно ли ещё и по вертикали.

Как выровнять

Текст, ссылка или кнопка в строкеtext-align

CSS
h1 {
  text-align: center;
}

text-align: center центрирует строки текста и строчные элементы (ссылки, <span>, картинки, кнопки) внутри блока. Свойство пишут родителю: чтобы поставить по центру кнопку, text-align: center задают блоку, в котором она лежит.

Дальше: «Какой способ выбрать»

Блок по горизонталиmargin: 0 auto

CSS
.page {
  max-width: 800px;
  margin: 0 auto;
}

Автоматические отступы слева и справа делят свободное место поровну. Два условия: у блока задана ширина (width или max-width) меньше родителя, и это блочный элемент. Картинке для этого нужен display: block:

CSS
.photo {
  display: block;
  margin: 0 auto;
}

Дальше: «Какой способ выбрать»

По горизонтали и вертикалиFlexbox или Grid

Подойдёт любой из двух способов. Свойства пишут контейнеру — блоку, внутри которого лежит то, что нужно поставить в центр.

Flexbox

CSS
.box {
  display: flex;
  justify-content: center;
  align-items: center;
  min-height: 300px;
}

Всё, что внутри .box, встанет точно в центр. justify-content центрирует по горизонтали, align-items — по вертикали. Без высоты контейнера вертикально центрировать некуда: блок высотой с содержимое.

Центр всего окна — та же запись с min-height: 100vh (вся высота окна). У body при этом уберите стандартный отступ: margin: 0.

Grid

CSS
.box {
  display: grid;
  place-items: center;
  min-height: 300px;
}

Самая короткая запись: place-items: center центрирует по обеим осям сразу.

Дальше: «Какой способ выбрать»

Окно поверх страницыposition: fixed

Окно-сообщение, которое висит в центре экрана над содержимым:

CSS
.modal {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

top и left по 50 % ставят в центр левый верхний угол блока, а transform сдвигает блок назад на половину его собственного размера.

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

Что нужно отцентрироватьСпособ
текст, ссылку, кнопку в строкеtext-align: center у родителя
колонку сайта, картинкуmargin: 0 auto и ширина (картинке — display: block)
что угодно в центр блокаFlexbox или Grid у родителя и высота
окно поверх страницыposition: fixed и transform

Подводные камни