Наступил двадцатый урок нашего курса по изучению HTML и CSS для начинающих. Сегодня мы погрузимся в увлекательный мир Grid Layout, мощного инструмента для создания сложных и адаптивных макетов веб-страниц. Если вы до этого работали с Flexbox, то Grid станет для вас следующим шагом в освоении современных технологий вёрстки.
Что такое Grid Layout?
CSS Grid Layout (или просто Grid) это система для создания двумерных макетов. В отличие от Flexbox, который работает в одном измерении (либо строка, либо столбец), Grid позволяет управлять как строками, так и столбцами одновременно. Это делает Grid идеальным инструментом для создания сложных сеток, таких как галереи, таблицы, карточки товаров и многое другое.
Grid Layout предоставляет нам полный контроль над размещением элементов на странице, их выравниванием и распределением пространства. Давайте разберёмся, как это работает.
Создание сетки
1. Основы Grid
Для начала создадим простую сетку. Для этого нам нужно:
- Создать контейнер и задать ему свойство
display: grid
. - Определить количество строк и столбцов.
Пример HTML:
<div class="grid-container"> <div class="item">1</div> <div class="item">2</div> <div class="item">3</div> <div class="item">4</div> <div class="item">5</div> <div class="item">6</div> </div>
Теперь добавим CSS:
.grid-container { display: grid; grid-template-columns: 100px 100px 100px; /* Три столбца по 100px */ grid-template-rows: 100px 100px; /* Две строки по 100px */ gap: 10px; /* Расстояние между элементами */ }
В этом примере мы создали сетку с тремя столбцами и двумя строками. Каждый элемент внутри контейнера автоматически занимает одну ячейку сетки.
2. Оси и треки
В Grid Layout есть две основные оси:
- Основная ось (row axis) — горизонтальная ось, вдоль которой располагаются строки.
- Поперечная ось (column axis) — вертикальная ось, вдоль которой располагаются столбцы.
Треки — это строки и столбцы сетки. Мы можем управлять их размерами с помощью свойств grid-template-rows
и grid-template-columns
.
Пример:
.grid-container { display: grid; grid-template-columns: 1fr 2fr 1fr; /* Три столбца: первый и третий занимают 1 часть, второй — 2 части */ grid-template-rows: auto 100px; /* Первая строка автоматически подстраивается под контент, вторая — 100px */ }
Здесь мы использовали единицу измерения fr
(fraction), которая позволяет распределять доступное пространство пропорционально.
3. Размещение элементов
Grid позволяет точно контролировать, где и как будут располагаться элементы внутри сетки. Для этого используются следующие свойства:
- grid-column-start и grid-column-end — определяют начальную и конечную позицию элемента по столбцам.
- grid-row-start и grid-row-end — определяют начальную и конечную позицию элемента по строкам.
- grid-area — сокращённая запись для указания позиции элемента.
Пример:
.item1 { grid-column-start: 1; grid-column-end: 3; /* Элемент занимает два столбца */ grid-row-start: 1; grid-row-end: 2; /* Элемент занимает одну строку */ } .item2 { grid-area: 2 / 1 / 3 / 4; /* Сокращённая запись: строка-начало / столбец-начало / строка-конец / столбец-конец */ }
Практические задачи
Задача 1: Создать сетку для галереи изображений
Создайте сетку из 6 изображений, где первые два изображения занимают два столбца, а остальные — по одному.
<div class="gallery"> <img src="image1.jpg" alt="Image 1"> <img src="image2.jpg" alt="Image 2"> <img src="image3.jpg" alt="Image 3"> <img src="image4.jpg" alt="Image 4"> <img src="image5.jpg" alt="Image 5"> <img src="image6.jpg" alt="Image 6"> </div>
.gallery { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; } .gallery img:first-child, .gallery img:nth-child(2) { grid-column: span 2; }
Задача 2: Адаптивная сетка
Создайте адаптивную сетку, которая на больших экранах отображает 4 столбца, а на мобильных устройствах — 2 столбца.
.grid-container { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 10px; }
Grid Layout это мощный инструмент, который значительно упрощает создание сложных макетов. Сегодня мы изучили основы создания сеток, управления осями и треками, а также размещения элементов. Попрактикуйтесь с примерами, чтобы лучше понять, как работает Grid.
Если вы хотите углубить свои знания, рекомендую ознакомиться с полным курсом по HTML и CSS для начинающих. Там вы найдёте ещё больше уроков, практических задач и полезных советов.
До встречи в следующем уроке.