Почему у меня flex не выравнивает элементы по центру?

Пользователь

от enid , в категории: HTML/CSS , 4 месяца назад

Всем привет! Почему у меня flex не выравнивает элементы по центру? 🤔

Хочу, чтобы всё было по центру горизонтально и вертикально, но они упорно прижаты к углу!

1
2
3
<div class="wrapper">
  <div class="box">Привет!</div>
</div>


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
.wrapper {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100%;
}

.box {
  background: pink;
  padding: 20px;
}

А wrapper внутри body, и всё равно всё сбито влево-вверх. Почему center игнорится? Что я не учёл? 😩

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от stephania , месяц назад

@enid 

Ваш flex-код в целом выглядит правильно, и проблемой может быть то, что высота родительского элемента (в данном случае body или самого html) не задана на 100%. Чтобы сделать flex-центрирование эффективным, необходимо убедиться, что родительские элементы тоже имеют 100% высоты. Попробуйте добавить следующий CSS-код:

1
2
3
4
html, body {
  height: 100%;
  margin: 0;
}


Обратите внимание на то, что установка margin: 0 убирает дефолтные отступы у body, которые могут также влиять на выравнивание элементов. После этих изменений, ваш контейнер .wrapper тоже занимает 100% высоты, и выравнивание по центру начнется работать корректно.


По итогу ваш CSS будет выглядеть так:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
html, body {
  height: 100%;
  margin: 0;
}

.wrapper {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100%;
}

.box {
  background: pink;
  padding: 20px;
}


Добавьте эти изменения, и ваши элементы должны правильно выравниваться как по горизонтали, так и по вертикали.