- Теория
- Теория
Используем грид-области
Мы разделили карточку на три колонки и растянули заголовок. Вышло неплохо, но элементы всё равно выстроились не так, как на макете: описание тарифа попало в третью, самую узкую, колонку и выпало из контейнера.
Тариф «Бесконечный разговор» с дополнительным пакетом СМС
Тариф для тех, кто действительно любит общение.
Чтобы поправить карточку, нужно изменить визуальный порядок элементов. Мы уже знакомы со свойством 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;
}Элементы, которым не задано имя области, выстраиваются по сетке, как обычно.
Хорошо владеете JavaScript, но до сих пор не освоили Node.js? Записывайтесь на профессиональный курс «Node.js. Профессиональная разработка REST API». Цена 12 000 ₽.
- index.html
Вы перешли на другую страницу
Кликните внутри мини-браузера, чтобы поставить фокус в это окно.