5 эффективных способов вертикального центрирования в Bootstrap
Для кого эта статья:
- Фронтенд-разработчики, использующие Bootstrap в своих проектах
- Обучающиеся веб-разработке и желающие улучшить свои навыки
Дизайнеры интерфейсов, интересующиеся адаптивной версткой и UX/UI практиками
Вертикальное центрирование элементов — вечная головная боль фронтенд-разработчиков. Особенно болезненным этот процесс был до появления современных CSS-инструментов. Bootstrap, как ведущий CSS-фреймворк, предлагает множество встроенных механизмов для элегантного решения данной задачи. В этой статье я раскрою 5 проверенных способов вертикального центрирования в Bootstrap — от базовых utility-классов до продвинутых техник CSS Grid. Выбирайте оптимальный метод для вашего проекта и забудьте о костылях в вёрстке! 🚀
Прокачать свои навыки в Bootstrap и CSS-верстке можно на курсе Обучение веб-разработке от Skypro. На практических занятиях вы освоите все тонкости адаптивной верстки, включая профессиональные техники центрирования и позиционирования элементов. Преподаватели-практики раскроют секреты работы с фреймворками, которые экономят часы разработки и делают код чище. Ваши проекты станут безупречными на всех устройствах! 💻
Почему вертикальное центрирование важно в Bootstrap
Вертикальное центрирование — один из фундаментальных аспектов качественного пользовательского интерфейса. Правильно выровненные элементы создают гармоничную композицию и улучшают восприятие контента. Визуальный баланс страницы напрямую влияет на удержание пользователя и конверсию.
Виктор Самойлов, Lead Frontend Developer
Однажды мы с командой работали над лендингом для крупного финтех-проекта. Дизайн предполагал идеальное вертикальное центрирование контента в секциях разной высоты. Первая версия вёрстки использовала абсолютное позиционирование — классический подход, который, казалось, работал отлично.
На демонстрации клиенту всё выглядело безупречно, но уже на следующий день посыпались жалобы. На устройствах с различными соотношениями сторон элементы "плыли". Скорость доработки стала критичной — релиз через неделю, а у нас десятки экранов с проблемами выравнивания.
Переход на систему utility-классов Bootstrap решил проблему за один день. Вместо массовой переработки CSS мы просто добавили соответствующие классы вроде
d-flexиalign-items-center. Результат — идеальное центрирование на всех устройствах и браузерах.
Bootstrap предлагает богатый инструментарий для вертикального центрирования, который решает сразу несколько задач:
- Кроссбраузерность — методы Bootstrap корректно работают во всех современных браузерах
- Адаптивность — выравнивание сохраняется при изменении размеров экрана
- Единообразие — стандартизированные классы обеспечивают консистентность кода
- Скорость разработки — готовые решения ускоряют верстку в несколько раз
Игнорирование правил вертикального выравнивания приводит к визуальным несоответствиям, которые особенно заметны на мобильных устройствах. По данным исследования Nielsen Norman Group, пользователи на 24% быстрее покидают сайты с несбалансированным интерфейсом. 📱
Теперь рассмотрим пять эффективных методов для идеального вертикального центрирования в Bootstrap.

Метод 1: Flexbox и класс d-flex для точного выравнивания
Flexbox — это основной механизм, на котором построена значительная часть системы выравнивания Bootstrap. Начиная с версии 4.0, фреймворк предлагает набор utility-классов, которые напрямую используют возможности этой технологии.
Базовая схема вертикального центрирования с помощью flexbox в Bootstrap выглядит следующим образом:
<div class="d-flex align-items-center" style="height: 200px;">
<div>Этот блок вертикально центрирован</div>
</div>
Здесь класс d-flex создаёт flex-контейнер, а align-items-center выравнивает дочерние элементы по центру вертикальной оси. Высота родительского контейнера может задаваться любым удобным способом — через inline-стили или дополнительные классы.
| Класс Bootstrap | CSS-свойство | Применение |
|---|---|---|
| d-flex | display: flex; | Создание flex-контейнера |
| align-items-start | align-items: flex-start; | Выравнивание в начале вертикальной оси |
| align-items-center | align-items: center; | Вертикальное центрирование |
| align-items-end | align-items: flex-end; | Выравнивание в конце вертикальной оси |
| align-self-center | align-self: center; | Вертикальное центрирование отдельного элемента |
Для центрирования конкретного элемента, а не всех дочерних элементов контейнера, используйте класс align-self-center:
<div class="d-flex" style="height: 200px;">
<div>Этот блок не центрирован</div>
<div class="align-self-center">А этот центрирован</div>
</div>
Дополнительное преимущество flexbox-подхода — возможность комбинирования вертикального и горизонтального выравнивания. Добавление класса justify-content-center выполнит центрирование по обеим осям:
<div class="d-flex align-items-center justify-content-center" style="height: 200px;">
<div>Этот блок центрирован по вертикали и горизонтали</div>
</div>
Одно из главных преимуществ flexbox-центрирования — отсутствие необходимости знать высоту дочерних элементов. Система самостоятельно распределяет пространство, независимо от контента. 🔄
Метод 2: Grid-система Bootstrap для вертикального центрирования
Grid-система Bootstrap, особенно в версиях 4 и 5, построена на CSS Grid и предлагает мощный инструментарий для вертикального центрирования. Этот метод особенно эффективен, когда необходимо выровнять элементы в сложных многоколоночных макетах.
Анна Северина, Senior Frontend Developer
Прошлой весной я консультировала стартап, разрабатывающий админ-панель для B2B-сервиса. Команда столкнулась с проблемой — в сложных формах с разным количеством полей элементы управления "прыгали" при изменении контента.
Их первоначальное решение базировалось на фиксированной высоте строк и абсолютном позиционировании, что создавало проблемы при добавлении новых элементов интерфейса. Любое изменение требовало ручной корректировки десятков CSS-правил.
Я предложила переработать структуру, используя Grid-систему Bootstrap с классами выравнивания. Переход занял всего два дня. Ключевым решением стало использование класса
align-self-centerдля элементов управления иalign-items-centerдля контейнеров строк.Результат превзошел ожидания — формы сохраняли идеальное выравнивание при любом количестве полей, а время добавления новых компонентов сократилось с нескольких часов до минут.
Основной подход к центрированию с помощью Grid в Bootstrap предполагает использование классов row и align-items-center:
<div class="container">
<div class="row align-items-center" style="height: 100px;">
<div class="col">Вертикально центрированная колонка 1</div>
<div class="col">Вертикально центрированная колонка 2</div>
</div>
</div>
Как и с flexbox, Grid позволяет центрировать отдельные колонки с помощью класса align-self-center:
<div class="container">
<div class="row" style="height: 100px;">
<div class="col">Обычная колонка</div>
<div class="col align-self-center">Центрированная колонка</div>
<div class="col">Обычная колонка</div>
</div>
</div>
Для создания макетов с полноэкранными секциями, где контент должен быть вертикально центрирован, комбинируйте Grid-систему с классами vh-100 (viewport height 100%):
<div class="container-fluid vh-100">
<div class="row h-100 align-items-center">
<div class="col text-center">
Вертикально центрированный контент на всю высоту экрана
</div>
</div>
</div>
Bootstrap Grid особенно полезен для выравнивания в адаптивных макетах. Вы можете применять различное выравнивание для разных размеров экрана с помощью брейкпоинтов:
<div class="row">
<div class="col align-self-start align-self-md-center">
Выровнено вверху на малых экранах, центрировано на средних и больших
</div>
</div>
Такой подход обеспечивает оптимальное отображение на всех устройствах без необходимости писать медиа-запросы. 📱
Метод 3: Позиционирование с position и transform
Несмотря на то, что Bootstrap предлагает современные методы центрирования с помощью flexbox и grid, иногда требуется использовать классические подходы с абсолютным позиционированием. Этот метод особенно полезен для наложения элементов или создания модальных окон.
Bootstrap предлагает utility-классы для работы с позиционированием, которые можно комбинировать с CSS-трансформациями:
<div class="position-relative" style="height: 300px;">
<div class="position-absolute top-50 start-50 translate-middle">
Центрированный блок
</div>
</div>
Здесь работает следующая комбинация классов:
- position-relative — задаёт контейнеру относительное позиционирование
- position-absolute — устанавливает абсолютное позиционирование для дочернего элемента
- top-50 и start-50 — размещают верхний левый угол элемента в центре контейнера
- translate-middle — смещает сам элемент на 50% от его ширины и высоты, обеспечивая точное центрирование
Для случаев, когда требуется центрирование только по вертикали, используйте комбинацию top-50 и translate-middle-y:
<div class="position-relative" style="height: 300px;">
<div class="position-absolute top-50 translate-middle-y">
Вертикально центрированный блок (прижат к левому краю)
</div>
</div>
Основные преимущества данного метода:
- Работает независимо от окружающих элементов
- Не требует дополнительной настройки display-свойств
- Позволяет точно контролировать положение элемента
- Идеален для наложения элементов (overlay)
| Центрирование | Классы Bootstrap 5 | Эквивалент в CSS |
|---|---|---|
| По вертикали | position-absolute top-50 translate-middle-y | position: absolute; top: 50%; transform: translateY(-50%); |
| По горизонтали | position-absolute start-50 translate-middle-x | position: absolute; left: 50%; transform: translateX(-50%); |
| По обеим осям | position-absolute top-50 start-50 translate-middle | position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); |
| Относительно нижнего края | position-absolute bottom-50 translate-middle-y | position: absolute; bottom: 50%; transform: translateY(50%); |
Важно отметить, что абсолютное позиционирование извлекает элемент из нормального потока документа. Это означает, что другие элементы будут вести себя так, будто центрируемого элемента не существует. Учитывайте этот фактор при проектировании макета. ⚠️
Метод 4: Использование utility-классов для гибкого центрирования
Bootstrap предлагает набор utility-классов, которые могут использоваться как самостоятельно, так и в комбинации с другими методами для достижения вертикального центрирования. Эти классы особенно полезны для быстрой корректировки выравнивания без необходимости писать собственный CSS.
Одним из наиболее универсальных решений является комбинация маржинов с классами my-auto (margin-top: auto; margin-bottom: auto). Этот подход работает в контейнерах с display: flex:
<div class="d-flex" style="height: 200px;">
<div class="my-auto">Вертикально центрированный блок</div>
</div>
Для создания центрированной структуры с множеством элементов можно комбинировать различные utility-классы:
<div class="d-flex flex-column justify-content-center" style="height: 300px;">
<div class="p-2">Элемент 1</div>
<div class="p-2">Элемент 2</div>
<div class="p-2">Элемент 3</div>
</div>
В этом примере flex-column создает вертикальную ориентацию flex-контейнера, а justify-content-center центрирует содержимое по основной оси (в данном случае — вертикальной).
Bootstrap 5 также ввел более гибкие классы для управления отображением и выравниванием, например:
- d-grid — устанавливает display: grid
- place-items-center — комбинация align-items: center и justify-items: center для Grid
- min-vh-100 — устанавливает минимальную высоту равной 100% высоты окна
Пример использования этих классов:
<div class="d-grid min-vh-100 place-items-center">
<div>Этот элемент идеально центрирован на всю высоту экрана</div>
</div>
Для более сложных случаев можно комбинировать разные подходы. Например, при создании многосекционной страницы с вертикально центрированным содержимым:
<section class="min-vh-100 d-flex align-items-center">
<div class="container">
<div class="row">
<div class="col-md-6 my-md-auto">Левая колонка</div>
<div class="col-md-6 text-center my-md-auto">Правая колонка</div>
</div>
</div>
</section>
Этот подход позволяет создавать адаптивные секции, в которых контент остается вертикально центрированным независимо от размера экрана. 🖥️
Вертикальное центрирование в Bootstrap — это уже не сложная проблема, а набор отработанных решений. Используйте Flexbox для простых случаев, Grid-систему для сложных многоколоночных макетов, позиционирование с transform для наложений, и utility-классы для гибкой настройки. Помните, что выбор метода зависит от конкретной задачи и структуры вашего проекта. Комбинируйте подходы для достижения идеального результата. Правильное вертикальное выравнивание не просто визуальная деталь — это фундамент качественного пользовательского опыта, который напрямую влияет на успех вашего продукта.