Узнайте о сетке CSS на практических примерах.

Вступление

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

В этой статье мы узнаем о CSS-сетке с некоторыми практическими примерами, которые помогут вам разобраться. Давайте приступим к делу.

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

Чтобы начать использовать систему сеток, вам нужно будет определить контейнер 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 или inline-grid в CSS.

Вот пример:

.container {
  display: grid;
  background-color: crimson;
  padding: 10px;
}
.container > .child {
  background-color: rgba(255, 255, 255, 0.8);
  text-align: center;
  font-size: 30px;
  margin: 5px;
}

Вывод:

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

Сетка-шаблон-столбцы

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

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

Взгляните на пример ниже:

.container {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  background-color: crimson;
  padding: 10px;
}
.container > .child {
  background-color: rgba(255, 255, 255, 0.8);
  text-align: center;
  font-size: 30px;
  margin: 5px;
}

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

Вывод:

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

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

Вывод:

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

Вот пример:

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

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

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

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

HTML:

<div class="grid">
 <div class="item">Product 1</div>
 <div class="item">Product 2</div>
 <div class="item">Product 3</div>
 <div class="item">Product 4</div>
 <div class="item">Product 5</div>
 <div class="item">Product 6</div>
</div>

CSS:

*{
 margin: 0;
 padding: 0;
 box-sizing: border-box;
 font-family: sans-serif;
}
body{
 height: 100vh;
 margin-top: 150px;
}
.grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
}
.item{
 background: red;
 padding: 20px;
 color: wheat;
 margin: 10px;
}

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

Сетка-шаблон-строки

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

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

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

Вывод:

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

Свойство сетки

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

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

Свойство 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. Вы можете попробовать их в текстовом редакторе, чтобы увидеть различия.

Элементы сетки

CSS-сетка также имеет некоторые полезные свойства, которые вы можете передать дочерним элементам контейнера сетки, чтобы легко создавать сложные макеты сетки. Некоторые из этих свойств:

  • сетка-столбец
  • сетка
  • сетка

Вы можете узнать о них на сайте W3schools, потому что, если я захочу осветить все в этой статье, вам придется прокручивать всю свою жизнь.

Заключение

Сетка - это потрясающая функция CSS, которая позволяет легко создавать сложные и гибкие структуры макета. Я настоятельно рекомендую вам попрактиковаться в этой функции, потому что практика - единственный способ улучшить ее.

Спасибо, что прочитали эту статью. Я надеюсь, что вы сочли полезным.

Больше Чтения

Если вас интересует более полезный контент, связанный с JavaScript и веб-разработкой, вы также можете подписаться на мою рассылку.

Вот еще одна полезная статья, которую стоит проверить по ссылке ниже: