CSS Grid: строим сетку страницы

Если Flexbox отлично справляется с расположением элементов в одном направлении, то CSS Grid создавался специально для двумерных раскладок — когда важно контролировать расположение и по строкам, и по столбцам одновременно. Это тот инструмент, которого вёрстке действительно не хватало долгие годы.

Контейнер становится сеткой через display grid, а дальше через grid-template-columns и grid-template-rows задаётся количество и размер строк и столбцов. Значение fr, дробная единица, особенно удобно здесь — оно распределяет свободное пространство пропорционально между колонками, без необходимости высчитывать проценты вручную.

Функция repeat экономит немало кода при описании повторяющихся колонок — вместо того чтобы писать одинаковое значение шесть раз подряд, достаточно указать repeat с числом повторений и самим значением. Для адаптивных сеток с автоматическим количеством колонок пригождается связка auto-fill или auto-fit с minmax.

Элементы внутри грид-контейнера можно позиционировать не только по порядку, но и явно указывая, в какую строку и колонку они должны попасть, через grid-column и grid-row. Это позволяет одному элементу занимать сразу несколько ячеек сетки, что особенно удобно для выделения главного баннера среди карточек одинакового размера.

Именованные области сетки через grid-template-areas — ещё одна сильная сторона Grid: можно буквально нарисовать текстом, где на странице находится шапка, основной контент, боковая колонка и подвал, и это будет читаться почти как схема макета прямо в коде стилей.

Grid и Flexbox прекрасно уживаются в одном проекте — сеткой часто размечают крупные разделы страницы целиком, а внутри отдельных карточек или элементов навигации используют Flexbox для более локального выравнивания содержимого.

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

Поделиться в социальных сетях

Отправить комментарий

0 Комментарии

Отправить комментарий (0)

#buttons=(Хорошо) #days=(20)

Мы используем файлы cookie для улучшения работы сайта. Подробнее
Хорошо
×