CSS: центрируем элемент по вертикали
современные подходы к центрированию в CSS
Проблема центрирования блоков на веб-страницах уже давно стала мемом, особенно для backend-разработчиков. За последние годы описано множество способов выравнивания элементов страницы по центру, как по горизонтали, так и по вертикали, в том числе с использованием возможностей модели flexbox.
Сегодня проблема вертикального позиционирования элемента по центру наконец-то изящно решена, благодаря CSS-свойству align-content
Как это было
До появления align-content
для вертикального выравнивания элемента по центру приходилось использовать CSS Grid
или flexbox
.
Пример с CSS Grid:
<div style="display: grid; align-content: center; justify-content: center; height: 100vh;">
Hello World!
</div>
Пример с flexbox:
<div style="display: flex; flex-direction: row; align-items: center; justify-content: center; height: 100vh;">
Hello World!
</div>
Для горизонтального выравнивания, как в случае c CSS Grid
, так и в случае с flexbox
, применялось свойство justify-content
. Для строчных элементов проблема решалась с помощью CSS-свойства родительского контейнера text-align: center
.
Как это работает теперь
Благодаря свойству align-content: center
больше нет необходимости использовать модели CSS Grid
или flexbox
, у каждой из которых есть свои недостатки. Теперь получить желаемый результат стало гораздо проще и понятнее:
<div style="align-content: center; height: 100vh;">
Hello World!
</div>
К сожалению, это работает только для вертикального центрирования элемента. Выравнивание элемента по центру в горизонтальном направлении по прежнему происходит с помощью text-align
в сочетании с align-content
.
<div style="align-content: center; text-align: center; height: 100vh;">
Hello World!
</div>
Следует обратить внимание на минимальные версии поддерживаемых броузеров для реализации выравнивания элемента по вертикали с помощью align-content
:
- Chrome 123,
- Firefox 125,
- Safari 17.4
Дополнительные материалы
Спасибо за внимание.