Flexbox и Grid: игра-тренажёр по CSS
Корабли садятся туда, куда их поставит CSS. Пишешь justify-content, align-items или grid-template-columns, и поле перестраивается на каждом символе. Уровень пройден, когда каждый корабль стоит на площадке своего цвета.
- 50 уровней: 25 по Flexbox и 25 по Grid
- 13 тем, любую можно открыть сразу
- бесплатно, без регистрации
К правому краю
Это космопорт, а ты диспетчер: корабли садятся туда, куда их поставит CSS. Порт .port уже стал flex-контейнером, и корабль встал в начало ряда. Отправь его на площадку у правого края через justify-content.
Цветные скобки — площадки. Корабль садится на площадку своего цвета.
На площадках 0 из 1.
Браузер не даёт сохранить прогресс: звёзды пропадут после перезагрузки.
шпаргалка темы
flex-startк началу оси, так по умолчаниюflex-endк концу осиcenterв серединуspace-betweenкрайние у стен, свободное место между кораблямиspace-aroundодинаковый отступ вокруг каждого корабляspace-evenlyвсе промежутки равны, у стен тоже
Как играть
- Посмотри на поле. Цветные скобки — посадочные площадки. Каждому кораблю нужна площадка его цвета.
- Допиши CSS в редактор. Правило уже открыто: вписываешь свойства, и корабли сразу едут на новые места. Кнопки «запустить» нет.
- Посади все корабли. Уровень засчитан, когда они стоят на своих площадках. Три звезды — без подсказки и ответа, прогресс остаётся в браузере.
Темы и уровни
Уровни идут от простого к сложному, но заперт ни один: знаешь Flexbox — сразу открывай Grid. Каждая тема вводит одно-два свойства, а финал мира собирает их вместе.
Flexbox: 25 уровней
Главная ось
justify-content двигает корабли вдоль главной оси: в обычном ряду это горизонталь.
Поперечная ось
align-items выравнивает корабли поперёк главной оси: в ряду это вертикаль.
Направление
flex-direction поворачивает главную ось: ряд, колонка или обратный порядок.
Один корабль
Правило для одного корабля: order, align-self и margin двигают его отдельно от остальных.
Перенос строк
Кораблей больше, чем влезает в ряд: перенос, строки и зазоры.
Размеры
flex-grow и flex-shrink решают, кто забирает свободное место и кто сжимается, когда места мало.
Grid: 25 уровней
Колонки и строки
В Grid сначала чертят сетку, а корабли занимают ячейки по порядку.
Линии сетки
Сетка нумерует линии между колонками и строками. Корабль ставится от линии до линии.
Области
Сетку можно нарисовать словами: у области есть имя, у корабля — адрес.
Выравнивание в ячейках
Корабль стоит в ячейке где угодно: по центру, в углу, у края. А ещё можно сдвинуть всю сетку.
Автоматическая сетка
Сетка сама решает, сколько колонок и строк ей нужно.
Шпаргалка по Flexbox и Grid
Все свойства, которые встречаются в игре, с частыми значениями. Свойства для одного элемента — order, align-self, flex-grow, grid-column — пишутся в правиле элемента, остальные в правиле контейнера.
Flexbox
| Свойство | Что делает | Частые значения |
|---|---|---|
display: flex | делает элемент flex-контейнером | flex, inline-flex |
flex-direction | направление главной оси | row, row-reverse, column, column-reverse |
justify-content | выравнивание вдоль главной оси | flex-start, center, flex-end, space-between, space-around, space-evenly |
align-items | выравнивание поперёк главной оси | stretch, flex-start, center, flex-end, baseline |
flex-wrap | перенос элементов на новую строку | nowrap, wrap, wrap-reverse |
align-content | расстановка строк, когда их несколько | flex-start, center, space-between, stretch |
gap | зазоры между элементами и строками | 16px, 8px 16px |
order | место элемента в ряду | 0, 1, -1 |
align-self | выравнивание одного элемента поперёк оси | flex-start, center, flex-end, stretch |
flex-grow | доля свободного места | 0, 1, 2 |
flex-shrink | сжатие, когда места не хватает | 1, 0 |
flex-basis | размер до раздачи свободного места | auto, 200px, 0 |
Grid
| Свойство | Что делает | Частые значения |
|---|---|---|
display: grid | делает элемент grid-контейнером | grid, inline-grid |
grid-template-columns | колонки сетки | 1fr 1fr, repeat(3, 1fr), 200px 1fr |
grid-template-rows | строки сетки | 60px 1fr 40px, repeat(2, 100px) |
grid-template-areas | карта именованных областей | "header header" "sidebar main" |
gap | зазоры между ячейками | 12px, 8px 16px |
grid-column, grid-row | линии, от которой до которой стоит элемент | 1 / 3, 2 / -1, span 2 |
grid-area | имя области или четыре линии сразу | main, 1 / 1 / 3 / 3 |
justify-items, align-items, place-items | положение элементов внутри ячеек | start, center, end, stretch |
justify-self, align-self | положение одного элемента в ячейке | start, center, end, stretch |
justify-content, align-content | положение всей сетки в контейнере | start, center, space-between |
grid-auto-rows | высота строк, которые сетка создаёт сама | 100px, minmax(80px, auto) |
grid-auto-flow | порядок заполнения ячеек | row, column, dense |
Flexbox или Grid: что выбрать
Flexbox раскладывает элементы по одной оси — в ряд или в колонку, и размеры элементов подстраиваются под содержимое. Grid чертит сетку сразу в двух измерениях: сначала колонки и строки, потом элементы по ячейкам.
Шапка с логотипом и меню, ряд кнопок, карточка по центру — это Flexbox. Каркас страницы с сайдбаром, галерея карточек, дашборд — Grid. В реальной вёрстке они работают вместе: сетку страницы задаёт Grid, а содержимое ячеек выравнивает Flexbox.
Если сомневаешься, спроси себя, что важнее. Выровнять элементы относительно друг друга — Flexbox. Поставить их по заранее заданной сетке — Grid.
Частые вопросы
Игра бесплатная? Нужна регистрация?
Бесплатная и без регистрации. Звёзды и набранный CSS хранятся в браузере: вернёшься с того же устройства и продолжишь с того же уровня.
С чего начать: с Flexbox или с Grid?
С Flexbox. Его 25 уровней вводят главную и поперечную оси, а на тех же осях держится выравнивание в Grid. Если Flexbox уже знаком, открой карту уровней и начни с темы «Колонки и строки».
Засчитывается решение, которое не совпадает с ответом?
Да. Игра сравнивает положение и размер каждого корабля с площадкой, а не текст CSS. На первом уровне корабль можно отправить вправо через flex-direction: row-reverse вместо justify-content: flex-end: уровень засчитан, если всё совпало до пикселя.
Чем игра отличается от Flexbox Froggy и Grid Garden?
Механика похожая: пишешь CSS, и объекты встают на места. Здесь Flexbox и Grid в одной игре, 50 уровней, а в последних темах — gap, flex-grow и flex-shrink, auto-fill с minmax() и плотная упаковка dense. Если застрял, на каждом уровне есть подсказка и ответ.
Можно играть с телефона?
Да. Поле масштабируется под ширину экрана, а CSS набирается обычной клавиатурой. С компьютера удобнее: в темах про области и автосетку строки длинные.
Что делать после игры?
Собрать настоящую страницу. В тренажёре HTML и CSS раскладка нужна уже для карточек, шапки с меню и адаптивной галереи. Первые 6 заданий из 21 бесплатны.