Центрирование группы элементов в div: решения CSS

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Примените свойство display: inline-block; к дочерним блокам вместо использования float. Установите text-align: center; для родительского блока. Чтобы убрать отступы между элементами, задайте font-size: 0 для родительского блока и восстановите исходный размер шрифта для дочерних элементов.

HTML
Скопировать код
<div style="text-align:center; font-size:0;">
  <div style="display:inline-block; font-size:initial;">Содержимое 1</div>
  <div style="display:inline-block; font-size:initial;">Содержимое 2</div>
  <div style="display:inline-block; font-size:initial;">Содержимое 3</div>
</div>
Кинга Идем в IT: пошаговый план для смены профессии

Методы центрирования

Современный подход: Flexbox

Flexbox позволяет эффективно выполнять горизонтальное и вертикальное выравнивание элементов. Для этого используйте justify-content: center; и align-items: center;.

CSS
Скопировать код
.parent {
  display: flex;
  justify-content: center;
  align-items: center;
}
.child {
  /* Здесь float не требуется. */
}

Традиционный метод: Центрирование блочных элементов

Для блочных элементов, таких как div, задайте ширину и автоматические отступы слева и справа.

CSS
Скопировать код
div {
  width: 50%; 
  margin-left: auto;
  margin-right: auto;
}

Обеспечение clearfix для плавающих элементов

Для предотвращения схлопывания контейнера, содержащего плавающие элементы, используйте clearfix.

CSS
Скопировать код
.clearfix::after {
  content: "";
  display: table;
  clear: both;
}

Методы настройки

Установка размеров как профессионалу

Укажите ширину и высоту в процентах для эластичного макета:

CSS
Скопировать код
.parent {
  width: 80%; 
  margin: auto;
}
.child {
  width: 30%;
}

Вспомогательные div-блоки

Пригодятся дополнительные div-блоки с overflow: hidden; или абсолютное позиционирование внутри блока с относительным позиционированием, если display: inline-block; не подходит.

Будьте осторожны с совместимостью браузеров

Проверяйте поддержку различных свойств, например, Flexbox, в различных браузерах и предусматривайте запасные варианты.

Визуализация

Можно представить дочерние блоки как воздушные шарики (🎈) внутри комнаты (🏠):

Markdown
Скопировать код
🏠: [🎈🎈🎈]

Центрируем шарики:

CSS
Скопировать код
.room {
  display: flex;
  justify-content: center;
  align-items: center;
}
.balloon {
  /* Float здесь не при делах. */
}

Результат будет таким:

Markdown
Скопировать код
🏠:     [ 🎈🎈🎈 ]

flexbox обеспечивает равномерное распределение и центрирование воздушных шаров (🎈) в пространстве комнаты (🏠).

Тактики адаптивности

Магия медиа-запросов

Медиа-запросы помогают адаптировать макет под различные устройства, сохраняя компоненты в центре.

CSS
Скопировать код
@media (max-width: 600px) {
  .child {
    width: 100%; 
  }
}

Масштабирование с помощью em

Использование em для указания размеров обеспечит масштабируемость и адаптивность макета.

Полезные материалы

  1. Руководство по центрированию в CSS от CSS-Tricks
  2. CSS Flexbox (Flexible Box) от w3schools
  3. Всё об использовании float в CSS на CSS-Tricks
  4. Свойство float на MDN
  5. Простая шпаргалка по flexbox
  6. Статья про псевдо-абсолютное позиционирование на A List Apart