• Теория
  • Теория

Используем грид-области

Мы разделили карточку на три колонки и растянули заголовок. Вышло неплохо, но элементы всё равно выстроились не так, как на макете: описание тарифа попало в третью, самую узкую, колонку и выпало из контейнера.

Тариф «Бесконечный разговор» с дополнительным пакетом СМС

Тариф для тех, кто действительно любит общение.

Безлимитные звонки.
Безлимитные соцсети.
Безлимитные мессенджеры.
600 СМС в день.
999₽
Не является публичной офертой.

Чтобы поправить карточку, нужно изменить визуальный порядок элементов. Мы уже знакомы со свойством order, но в данном случае удобнее будет не переставлять отдельные элементы, а описать шаблон карточки целиком, используя грид-области.

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

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

Макет карточки

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

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

.card {
  display: grid;
  grid-template-columns: 260px 165px 75px;
  grid-template-areas: "title title price";
}

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

.title {
  grid-area: title;
}

.price {
  grid-area: price;
}

Этот код свяжет заголовок с областью title, а блок с ценой — с областью price. В результате оба элемента расположатся так, как описано в grid-template-areas, невзирая на их порядок в разметке.

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

Имя области не обязано совпадать с селектором, но должно описывать содержимое элемента:

h1 {
  grid-area: title;
}

Элементы, которым не задано имя области, выстраиваются по сетке, как обычно.

Минимальный вид табов
  • index.html
HTML
HTML

Вы перешли на другую страницу

Кликните внутри мини-браузера, чтобы поставить фокус в это окно.

100%
Бабушка Кекс

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

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