Конспект «Микросетки. Продолжение». Раздел 2

Придумать подходящую структуру грид-контейнера бывает непросто. Если элементы расположены асимметрично, часто требуется больше колонок, чем кажется на первый взгляд.

Грид-области

Грид-областью называют часть сетки грид-контейнера, у которой есть имя. Имя области придумывает сам разработчик. Оно должно начинаться с буквы и может включать цифры, дефис и знак подчёркивания. Например: header, section-2, user_avatar. Следует выбирать такие имена, которые описывают содержимое области.

Чтобы описать структуру грида с помощью областей, используют свойство grid-template-areas. В нём указывают имена грид-областей. При этом каждый ряд оборачивают в кавычки, а колонки разделяют пробелом.

.card {
  display: grid;
  grid-template-areas: "title price";
}

В grid-template-areas можно указать сколько угодно рядов. При этом в кавычки оборачивают каждый ряд, но точка с запятой ставится только после последнего ряда! Для большей наглядности ряды записывают друг под другом:

grid-template-areas: "title price"
                     "options description";

Однако просто описать шаблон недостаточно, ведь браузер не знает, какие элементы мы имеем в виду. Чтобы связать имя области с соответствующим грид-элементом, используют свойство grid-area. Обратите внимание, в grid-area кавычки не нужны!

.title {
  grid-area: title;
}

Как растянуть грид-область

Если требуется растянуть область на несколько колонок, её имя повторяют нужное число раз:

grid-template-areas: "title title price";

Чтобы растянуть область на несколько рядов, достаточно повторить её имя в разных рядах:

grid-template-areas: "options description"
                     "options disclaimer";

Ограничения при использовании грид-областей

Грид-области должны быть прямоугольными и непрерывными.

// Такой код не сработает
grid-template-areas: "logo main"
                     "main main";

// Такой – тоже
grid-template-areas: "nav logo nav";

При описании шаблона количество колонок в каждом ряду должно быть одинаковым:

// Такой код не сработает
grid-template-areas: "logo nav"
                     "aside main banner"
                     "footer";

Если задать неправильное значение grid-template-areas, браузер его проигнорирует, и вёрстка может сломаться.

Имена областей в одном контейнере должны быть уникальными. Если задать одинаковое имя нескольким элементам, они наложатся друг на друга. По этой причине грид-области не подойдут, например, для списка карточек, особенно если количество этих карточек неизвестно заранее.

Свойство align-self (грид)

Свойство align-self задаёт выравнивание по вертикали одному элементу. Значения align-self принимает те же, что и align-items: stretch (значение по умолчанию), start, end и center.

.element {
  align-self: start;
}

Свойство justify-self

Свойство justify-self отвечает за выравнивание отдельного элемента по горизонтали:

.element {
  justify-self: start;
}

Это свойство принимает следующие значения:

  • stretch — значение по умолчанию; элемент занимает всё пространство по ширине.
  • start — элемент сжимается до содержимого и прижимается к левой границе.
  • end — элемент сжимается до содержимого и прижимается к правой границе.
  • center — элемент сжимается до содержимого и располагается по центру.
Бабушка Кекс

Притормози, дружище

Проходить вызовы части «Микросетки. Продолжение» тренажёра «Базовые механики построения сеток» можно после регистрации и оформления подписки.