PassFront
  1. PassFront
  2. База знаний
  3. Продвинутые темы

Как отцентрировать блочный элемент по вертикали?

Продвинутые темы

Блочный элемент по вертикали центрируют через Flexbox (`align-items: center`), Grid (`place-items` / `align-items`), или absolute + `transform: translateY(-50%)`.

Способы вертикального центрирования

Flexbox (рекомендуется)

.container {
  display: flex;
  align-items: center;   /* центр по вертикали (при row) */
  min-height: 100vh;      /* нужна высота контейнера */
}

align-items центрирует по поперечной оси (вертикали при flex-direction: row).

Grid

.container {
  display: grid;
  align-items: center;    /* по вертикали */
  /* или place-items: center; — по обеим осям */
}

Absolute + transform

.el {
  position: absolute;
  top: 50%;
  transform: translateY(-50%); /* сдвиг на половину своей высоты */
}

Когда высота элемента неизвестна.

margin: auto во Flex

.container { display: flex; }
.el { margin: auto 0; } /* центр по вертикали */

Главное

Для вертикального центрирования контейнер должен иметь высоту (height/min-height), иначе центрировать не в чем.

Как выбирать

  • Универсально → Flexbox (align-items: center).
  • По обеим осям → Grid (place-items: center).
  • Неизвестная высота элемента, оверлей → absolute + translateY.

Коротко для собеседования

Блочный элемент по вертикали центрируют: Flexbox (display: flex; align-items: center, контейнеру нужна высота), Grid (align-items: center или place-items: center), absolute + transform: translateY(-50%) (при неизвестной высоте). У контейнера должна быть высота. Универсальный выбор — Flexbox.

Другие вопросы раздела