Вот еще один способ центрирования по горизонтали с использованием flexbox и без указания какой-либо ширины для внутреннего контейнера. Идея состоит в том, чтобы использовать псевдоэлементы, которые будут подталкивать внутренний контент справа и слева.
Использование flex:1
для псевдоэлемента заставит их заполнить оставшиеся пробелы и принять одинаковый размер, а внутренний контейнер будет центрирован.
.container {
display: flex;
border: 1px solid;
}
.container:before,
.container:after {
content: "";
flex: 1;
}
.inner {
border: 1px solid red;
padding: 5px;
}
<div class="container">
<div class="inner">
Foo content
</div>
</div>
Мы также можем рассмотреть ту же ситуацию для вертикального выравнивания, просто изменив направление flex на столбец:
.container {
display: flex;
flex-direction: column;
border: 1px solid;
min-height: 200px;
}
.container:before,
.container:after {
content: "";
flex: 1;
}
.inner {
border: 1px solid red;
padding: 5px;
}
<div class="container">
<div class="inner">
Foo content
</div>
</div>