0Pricing
Frontend Academy · Урок

Flexbox для компоновки

Используйте Flexbox для выравнивания элементов в строке или столбце, распределения пространства и переноса содержимого без приёмов с float.

«Flexbox для компоновки» — бесплатный урок Frontend Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Frontend Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Frontend Academy содержит 4 уроков всего.

Что такое флексбокс

Флексбокс (гибкая модель раскладки) — это модель раскладки CSS для одномерных макетов: она распределяет пространство вдоль одной строки или одного столбца. Она решает задачи, с которыми раскладки на основе float не справлялись достаточно элегантно.

Включение флексбокса

Примените display: flex к container. Его непосредственные дочерние элементы автоматически станут флекс-элементами. Потомки этих элементов не затрагиваются.

.container {
  display: flex;
}
/* All direct children are now flex items */

Направление флекс-элементов

Задаёт главную ось. row (по умолчанию): элементы расположены слева направо. row-reverse: справа налево. column: сверху вниз. column-reverse: снизу вверх.

.stack { display: flex; flex-direction: column; }
.row   { display: flex; flex-direction: row; }

Выравнивание по главной оси

Распределяет пространство вдоль главной оси. flex-start (по умолчанию), flex-end, center, space-between, space-around, space-evenly.

.nav {
  display: flex;
  justify-content: space-between; /* logo left, links right */
}
.centered {
  display: flex;
  justify-content: center; /* items in the middle */
}

Выравнивание по поперечной оси

Выравнивает элементы по поперечной оси, перпендикулярной главной оси. stretch (по умолчанию), center, flex-start, flex-end, baseline.

.card {
  display: flex;
  align-items: center; /* vertically center content */
}

Свойство промежутка

gap: row-gap column-gap добавляет пространство между флекс-элементами без использования внешнего отступа. Это гораздо чище, чем приём с внешними отступами. Свойство широко поддерживается современными браузерами.

.grid {
  display: flex;
  flex-wrap: wrap;
  gap: 24px;        /* 24px in all directions between items */
  gap: 16px 24px;  /* row-gap column-gap */
}

Перенос флекс-элементов

По умолчанию флекс-элементы стараются поместиться в одну строку. flex-wrap: wrap позволяет им переходить на новые строки, когда места не хватает. Объедините это свойство с gap для простой адаптивной сетки.

.cards {
  display: flex;
  flex-wrap: wrap;
  gap: 16px;
}
.card {
  flex: 1 1 280px; /* grow, shrink, min-width */
}

Сокращённая запись свойств флекс-элементов

flex: grow shrink basis задаётся для флекс-элементов. flex: 1 — сокращённая запись 1 1 0%: элементы растягиваются равномерно, не учитывая размер содержимого. flex: 0 0 200px создаёт элемент фиксированной ширины 200 пикселей.

.sidebar { flex: 0 0 240px; }   /* fixed width */
.main    { flex: 1; }            /* takes remaining space */

Индивидуальное выравнивание

align-self, заданное для флекс-элемента, переопределяет align-items его контейнера только для этого элемента. Это удобно, когда один элемент должен выравниваться иначе, чем его соседние элементы.

.container { display: flex; align-items: center; }
.tall-item  { align-self: flex-start; }

Свойство порядка

order управляет визуальным порядком флекс-элементов, не изменяя порядок в HTML. Значение по умолчанию — 0. Элементы с меньшими значениями отображаются раньше. Используйте свойство экономно: оно создаёт несоответствие между визуальным порядком и порядком в DOM или при чтении.

Центрирование с помощью флексбокса

Самый простой способ центрировать элемент по горизонтали и вертикали: задайте родителю display: flex; justify-content: center; align-items: center.

.overlay {
  position: fixed;
  inset: 0;  /* shorthand for top/right/bottom/left: 0 */
  display: flex;
  justify-content: center;
  align-items: center;
  background: rgba(0,0,0,0.5);
}

Быстрая проверка

Какое свойство флексбокса распределяет пространство между элементами вдоль главной оси?

Повторение: основы флексбокса

Задайте контейнеру режим флекс-раскладки. Выберите строку или столбец для направления оси. Используйте justify-content для распределения пространства по главной оси, align-items — по поперечной оси, gap — для промежутков, а flex-wrap — для нескольких строк. Сокращённая запись flex управляет ростом элементов. Это универсальная одномерная система раскладки.

Часто задаваемые вопросы

Урок «Flexbox для компоновки» бесплатный?

Да — полный текст урока «Flexbox для компоновки» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Frontend Academy, подпишись на CoddyKit PRO. Курс Frontend Academy содержит 4 уроков всего.

Чему я научусь в уроке «Flexbox для компоновки»?

Используйте Flexbox для выравнивания элементов в строке или столбце, распределения пространства и переноса содержимого без приёмов с float. Ты практикуешь Frontend Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Frontend Academy?

Предыдущий опыт не требуется. Frontend Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Flexbox для компоновки»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Frontend Academy?

Да. Каждый урок Frontend Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Мета-тег viewport
  2. Flexbox для компоновки
  3. CSS Grid для компоновки
  4. Медиазапросы и разработка с приоритетом мобильных устройств
← Назад к Frontend Academy