Найти тему
Nuances of programming

Изучаем CSS Grid на примерах

Оглавление

Источник: Nuances of Programming

Вступление

Система Grid (сетка) является одной из наиболее полезных функций, добавленных в CSS. Она позволяет выравнивать элементы страницы по столбцам и строкам. CSS Grid упрощает разработку сложных и адаптивных веб-страниц и не требует данных с плавающей запятой, таблиц или позиционирования. У Grid есть множество и более мощных способностей, которые можно узнать в процессе серьезной работы с этой системой.

Чтобы лучше понять возможности CSS Grid, разберем далее некоторые практические примеры.

Определение контейнера

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

<div class ="container" > <div class ="child" >1</div > <div class ="child" >2</div > <div class ="child" >3</div > <div class ="child" >4</div > </div >

Родительский div становится контейнером grid, когда мы устанавливаем в CSS его отображение в grid или inline-grid .

Вот пример:

Результат:

Контейнер grid с дочерними элементами
Контейнер grid с дочерними элементами

Теперь можно использовать такие свойства контейнера, как justify-content align-items , например, для центрирования дочерних элементов внутри контейнера div . Рассмотрим на примерах ниже.

Свойства grid-template-columns

Свойство grid-template-columns используется для определения количества столбцов в контейнере grid. А также помогает определить ширину каждого столбца.

Допустим, нужно определить внутри контейнера grid 3 столбца. В этой ситуации можно использовать дроби fr в качестве значения свойства grid-template-columns . Дроби используются для разделения макета сетки на столбцы или строки.

Смотрите пример ниже:

Как видите, использовано 3 дроби 1fr , чтобы разделить контейнер grid на 3 столбца.

Результат:

Столбцы шаблона grid
Столбцы шаблона grid

Свойство grid-template-columns также можно использовать для указания ширины столбцов.

.container {
display : grid;
grid-template-columns : 200px 50px 150px 100px ;
}

Результат:

Столбцы шаблона grid
Столбцы шаблона grid

В дополнение к этому, свойства grid-template-columns можно установить в значении auto . В результате ширина столбца будет автоматически увеличиваться в зависимости от размера вашего экрана.

Вот пример:

.container {
display : grid;
grid-template-columns : auto auto;
}

Ширина колонок auto
Ширина колонок auto

Одним из замечательных свойств является простое создание автоматически адаптивных макетов с помощью ширины grid-template-columns и функции minmax() , которая делает ширину минимальной или максимальной в зависимости от размера экрана.

grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)) ;

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

Количество столбцов определится автоматически в зависимости от размера используемого экрана. При минимальной ширине экрана будет только 1 столбец 1fr . На очень широком экране будет отображаться группа столбцов шириной в 200 пикселей.

Свойства grid-template-rows

Свойство grid-template-rows используется для определения количества строк в контейнере grid. Это похоже на grid-template-columns , с той лишь разницей, что теперь мы работаем со строками вместо столбцов.

Допустим, нужно определить контейнер grid с двумя столбцами и двумя строками. Сделать это можно, используя свойства grid-template-rows и grid-template-columns . Вот пример:

.container {
display : grid;
grid-template-columns : 1 fr 1 fr;
grid-template-rows : 1 fr 1 fr;
}

Результат:

Строки шаблона grid
Строки шаблона grid

Можно использовать свойство grid-template-rows , чтобы определить ширину строки или автоматически растянуть ее, как мы это делали, используя grid-template-columns . Разницы нет, просто вместо столбцов мы работаем со строками.

Свойство grid-gap

Свойство grid-gap используется внутри родительского элемента для установки зазора между столбцами и строками.

.container {
display : grid;
grid-template-columns : auto auto;
grid-gap : 15px ;
}

-7

Свойство align-content

Свойство align-content используется для полного выравнивания по вертикали внутри контейнера.

Вот пример:

.container {
display : grid;
grid-template-columns : auto auto;
grid-template-rows : 50px 80px ;
height : 400px ;
align-content : center;
background-color : crimson;
padding : 10px ;
}

Результат:

Центрирование по вертикали
Центрирование по вертикали

Есть и некоторые другие значения, которые можно передать для align-content , например:

space-between , start , space-around , и end . Чтобы увидеть различия, можно исследовать их в текстовом редакторе.

Составляющие Grid

CSS Grid имеет некоторые полезные свойства, которые можно передавать дочерним элементам контейнера grid, чтобы упростить создание сложных макетов. Вот некоторые из этих свойств:

  • grid-column
  • grid-row
  • grid-area

Подробнее узнать о них можно на специализированных веб-сайтах.

Заключение

Grid  —  это очень полезная функция CSS, которая упрощает разработку сложных и адаптивных структур макетов. Для совершенствования навыков разработчика настоятельно рекомендуется практиковать эту функцию.

Читайте также:

Читайте нас в Telegram , VK

Перевод статьи Mehdi Aoussiad : CSS Grid Explained With Examples