🔒 Ты не вошёл(вошла) в аккаунт — прогресс, работы и результаты теста не сохраняются. Что недоступно?
✅ Без входа можно
- читать все 33 занятия, смотреть слайды и шпаргалку;
- пробовать код в редакторе и песочнице.
⛔ Без входа нельзя
- сохранять работы — черновик живёт только в этом браузере и пропадёт при очистке истории, в режиме инкогнито или на другом устройстве;
- отмечать пройденные занятия и видеть свой прогресс;
- выбрать тему итогового проекта и отмечать чек-лист;
- отправить итоговый тест и сохранить результат.
Flexbox
Сегодня мы выстроим меню и карточки в аккуратный ряд с помощью волшебного display: flex.
Изучаем: display: flex, justify-content, align-items, gap
Результат: Меню и карточки в ряд
👀 Сегодня сделаем вот такое
Показать код примера
<header class="header">
<div class="logo">🚀 Космос</div>
<nav class="menu">
<a href="#">Главная</a>
<a href="#">Планеты</a>
<a href="#">Контакты</a>
</nav>
</header>
<div class="cards">
<div class="card">Меркурий</div>
<div class="card">Венера</div>
<div class="card">Земля</div>
</div>
body {
font-family: sans-serif;
margin: 0;
}
.header {
display: flex;
justify-content: space-between;
align-items: center;
padding: 16px 24px;
background: #2d3436;
}
.logo {
color: white;
font-size: 22px;
}
.menu {
display: flex;
gap: 20px;
}
.menu a {
color: #ffeaa7;
}
.cards {
display: flex;
flex-wrap: wrap;
gap: 16px;
padding: 24px;
}
.card {
flex: 1;
min-width: 120px;
padding: 40px 10px;
text-align: center;
background: #74b9ff;
}
💡 Объяснение
Зачем нужен Flexbox
Блочные элементы по умолчанию встают друг под другом, как книги стопкой. А на сайтах постоянно нужно ставить элементы в ряд: пункты меню, карточки товаров, логотип слева и кнопки справа. Раньше это делали хитрыми трюками, а сейчас есть Flexbox (гибкие коробки) — простой и мощный инструмент раскладки.
Главное правило: контейнер и элементы
Во Flexbox всегда участвуют двое:
- flex-контейнер — родитель, которому мы пишем
display: flex;; - flex-элементы — его прямые дети. Они выстраиваются сами.
<nav class="menu">
<a href="#">Главная</a>
<a href="#">Галерея</a>
<a href="#">Контакты</a>
</nav>
.menu {
display: flex;
}
Всё — ссылки встали в ряд. Представь, что контейнер — это полка, а элементы — книги на ней. Мы управляем полкой, а книги расставляются по её правилам.
Оси
У Flexbox есть две оси:
- главная ось — вдоль которой идут элементы. По умолчанию горизонтально, слева направо;
- поперечная ось — перпендикулярно главной (по умолчанию вертикально).
flex-direction меняет направление главной оси: row (ряд, по умолчанию) или column (колонка). При column оси «поворачиваются».
justify-content — выравнивание по главной оси
flex-start— прижать к началу (по умолчанию);center— по центру;flex-end— прижать к концу;space-between— первый у левого края, последний у правого, остальное место — поровну между ними. Идеально для шапки «логотип слева — меню справа»;space-aroundиspace-evenly— одинаковое место вокруг элементов.
align-items — выравнивание по поперечной оси
stretch— растянуть на всю высоту контейнера (по умолчанию — поэтому карточки в ряд одинаковой высоты);center— по центру по вертикали. Например, выровнять логотип и меню разной высоты;flex-start/flex-end— к верху / к низу.
Знаменитый трюк — идеальное центрирование блока по обеим осям:
.container {
display: flex;
justify-content: center;
align-items: center;
min-height: 300px;
}
gap — промежутки
gap: 16px; добавляет расстояние между элементами, но не по краям. Это удобнее, чем margin у каждого элемента.
flex-wrap — перенос
По умолчанию flex-элементы стараются уместиться в одну строку и сжимаются. flex-wrap: wrap; разрешает переносить элементы на новую строку, когда им не хватает места, — как слова в тексте. Очень важно для телефонов.
Свойства для детей
flex: 1;— элемент забирает свободное место. Если у трёх карточекflex: 1, они будут одинаковой ширины и займут весь ряд. Если у однойflex: 2— она будет вдвое шире остальных.min-width: 200px;— вместе сflex-wrapне даёт карточкам сжаться слишком сильно.margin-left: auto;— «отталкивает» элемент вправо.
Практика: шапка сайта
.header {
display: flex;
justify-content: space-between;
align-items: center;
}
.menu {
display: flex;
gap: 20px;
}
Обрати внимание: flex-контейнеры можно вкладывать. Шапка раскладывает логотип и меню, а меню внутри — свои ссылки.
Потренируйся в игре
Flexbox Froggy (flexboxfroggy.com, есть русский язык) — игра, где свойствами Flexbox нужно рассадить лягушек на кувшинки. 24 уровня — и все свойства запомнятся сами.
Частые ошибки
display: flexнаписан детям, а не родителю.- Ждут, что Flexbox разложит «внуков» — он работает только с прямыми детьми.
- Путают
justify-content(главная ось) иalign-items(поперечная). - Забыт
flex-wrap— на телефоне карточки сжимаются в «спагетти».
Проверь себя
- Кому пишется
display: flex— родителю или детям? - Как расставить логотип слева, а меню справа?
- Как отцентрировать блок и по горизонтали, и по вертикали?
⌨️ Практика
- Сделай шапку: логотип слева, меню справа (justify-content: space-between).
- Выстрой пункты меню в ряд с промежутком gap.
- Выстрой три карточки в ряд, одинаковой ширины (flex: 1).
- Добавь flex-wrap и сузь окно — посмотри, что произойдёт.
🧪 Редактор
🪞 Рефлексия
- Что нового я сегодня узнал(а)?
- Что получилось лучше всего?
- Где было трудно и что поможет в следующий раз?
🔒 Отметить занятие пройденным можно только после входа. Без аккаунта сайт не запомнит, до какого занятия ты дошёл(дошла). Регистрация · Вход