ОБЗОР СОВРЕМЕННЫХ ВОЗМОЖНОСТЕЙ CSS. Subgrid

Subgrid — это возможность использовать сетку (grid) внутри дочерних элементов, сохраняя структуру родительской сетки.

Задача: Создать макет сетки с изображениями, где вложенные группы элементов адаптируются по ширине родительской сетки, сохраняя гибкость отступов. Некоторым группам необходимо задать индивидуальные стили — отступы и цвет фона, чтобы визуально выделить их на фоне остальных.

Нам нужно чтобы во втором ряду элементы начинались со второй колонки и последний элемент становился четвертой колонкой, а четвертый ряд обладал другим фоном и другими отступами:

ce5ddde1c2e900b3ddb6c6718600bc4f.png

Проблема: При использовании стандартной CSS Grid сложные макеты, включающие вложенные сетки, требуют ручного управления отступами и позициями для каждой отдельной вложенной сетки.

Это может приводить к сложностям в поддержке, нарушению единообразия отступов, а также к необходимости многократного дублирования CSS кода для каждой вложенной сетки. Стилизация вложенных элементов становится сложной и неудобной для изменения.

Давайте создадим разметку для нашей сетки. У нас будет четыре строки и три колонки

Далее напишем стандартные стили для нашей сетки и элементов

854e44026b6ef78eb36413de03c8b064.png

Попробуем добиться требуемого результата без использования subgrid. Это будет выглядеть вот так

1deead2b661d5553ec334de0d973a37c.png

Мы получим следующий результат. Это немного отличается от требуемого результата, не так ли?

Безусловно, мы можем доработать наши стили и так или иначе все же добиться нужного результата, но зачем это делать, если у нас есть такая возможность в css, как subgrid?

f1a214ea9c1e2dd598ae0742ef2c31b0.png

Давайте посмотрим на то как выглядят стили, если использовать subgrid. Стили выглядят намного более лаконично и имеют меньший объем, что тоже является плюсом

fa7e3c5113611a4e38140295eae8a4ce.png

Таким образом, мы получаем нужный нам результат

ac3521d285787ed1e82c8b99cfc2cd7d.png

CSS Subgrid упрощает процесс адаптации макета, поскольку дочерние элементы могут использовать сетку родителя, автоматически подстраиваясь под его параметры

Использование Subgrid позволяет упростить создание макетов с вложенными сетками, значительно улучшая контроль над отступами и адаптацией макета. Это не только облегчает поддержание единообразного стиля, но и сокращает количество кода, улучшая читаемость и поддержку сложных сеток.

Ссылка на спецификацию: CSS Grid Layout Module Level 2

Habrahabr.ru прочитано 6802 раза