CSS Grid: руковод

ru(Русский)

CSS - Grid

CSS Grid: руковод

ru(Русский)

Введение в CSS Grid для начинающих

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

Что такое CSS Grid?

CSS Grid — это как супергерой для веб-макетов. Это двухмерная система, которая позволяет вам организовывать контент в строках и столбцах. Представьте, что вы расставляете мебель в комнате — это то, что Grid делает для вашей веб-страницы!

Why Should You Care? (Why Should You Care? — Why you should care? Why is it important?)

Почему это важно?

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

Начало работы с CSS Grid

Давайте начнем с простого примера. Представим, что мы создаем базовый макет веб-страницы с заголовком, основным контентом, панелью и футером.

<div class="container">
<header>Заголовок</header>
<main>Основной контент</main>
<aside>Панель</aside>
<footer>Футер</footer>
</div>

Теперь добавим немного магии CSS:

.container {
display: grid;
grid-template-areas:
"header header header"
"main main sidebar"
"footer footer footer";
gap: 10px;
}

header { grid-area: header; background-color: #ff9999; }
main   { grid-area: main; background-color: #99ff99; }
aside  { grid-area: sidebar; background-color: #9999ff; }
footer { grid-area: footer; background-color: #ffff99; }

Что здесь происходит? Мы говорим контейнеру отображаться как网格 и определяем макет с помощью grid-template-areas. Это как если бы мы рисовали карту нашей веб-страницы!

Свойство CSS grid

Свойство grid — этоorthand для установки всех явных свойств网格а сразу. Это как швейцарский армейский нож для Grid!

Possible Values (Possible Values — Possible values)

Вот таблица возможных значений для свойства grid:

Значение Описание
none Не указывается поведение网格а
<grid-template> Указывает размеры столбцов и строк网格а
<grid-template-rows> / <grid-auto-columns> Устанавливает свойства grid-template-rows и grid-auto-columns
<grid-auto-flow> [<grid-auto-rows> [ / <grid-auto-columns> ] ] Устанавливает свойство grid-auto-flow, и optionally устанавливает свойства grid-auto-rows и grid-auto-columns

Applies to (Applies to — Applies to)

Свойство grid применяется к элементам контейнера网格а. Это как сказать: "Эй, этот элемент является начальником макета网格а!"

DOM Syntax (DOM Syntax — DOM Syntax)

object.style.grid = "none|<grid-template-rows> / <grid-template-columns>|<grid-auto-flow> [<grid-auto-rows> [ / <grid-auto-columns>] ]|initial|inherit";

Не волнуйтесь, если это сейчас looks like alien language (похоже на инопланетный язык). Мы разберем это!

CSS Grid - <grid-template>

Значение <grid-template> позволяет вам определять структуру вашего网格а. Это как создание чертежа для вашего макета.

.container {
grid: 100px 300px / 3fr 1fr;
}

Это создает网格 с двумя строками (100px и 300px в высоту) и двумя столбцами (3fr и 1fr в ширину). Единица fr как "доля доступного пространства" — очень удобно!

CSS Grid - minmax() и repeat()

Эти функции — как динамическая пара Grid:

  • minmax() устанавливает минимальный и максимальный размер для трека.
  • repeat() позволяет повторять определения треков.
.container {
grid: repeat(3, minmax(100px, auto)) / repeat(3, 1fr);
}

Это создает 3x3网格, где каждая строка имеет минимальную высоту 100px, но может расти, а столбцы делят доступное пространство поровну.

CSS Grid - Значение auto-flow

Значение auto-flow определяет, как автоматически размещенные элементы переносятся в网格. Это как решать, заполнять ли книжную полку горизонтально или вертикально.

.container {
grid: auto-flow / 200px 1fr;
}

Это создает столбцы 200px и 1fr, с автоматическим созданием строк по мере необходимости.

CSS Grid - Значение auto-flow dense

Добавление dense к auto-flow говорит网格у заполнять дыры раньш, если позже появляются меньшие элементы. Это как эффективно играть в Тетрис!

.container {
grid: auto-flow dense / 200px 1fr;
}

CSS Grid - Сложное缩短ение

Вы можете combine all these concepts into one powerful declaration ( объединить все эти концепции в одно мощное объявление):

.container {
grid: [auto-flow] 100px / repeat(3, [col-start] 1fr [col-end]);
}

Это создает网格 с автоматически переносящимися строками высотой 100px, и три равновidth columns с названными линиями.

CSS Grid - Связанные свойства

Grid имеет семейство свойств. Вот некоторые ключевые родственники:

Свойство Описание
grid-template-rows Определяет строки网格а
grid-template-columns Определяет столбцы网格а
grid-template-areas Определяет области шаблона网格а
grid-auto-rows Устанавливает размер для автоматически созданных строк
grid-auto-columns Устанавливает размер для автоматически созданных столбцов
grid-auto-flow Управляет работой алгоритма автоматического размещения

Помните, практика делает мастера! Не бойтесь экспериментировать с этими свойствами. У меня был студент, который создал цифровое искусство с помощью Grid — возможности безграничны!

В заключение, CSS Grid — это мощный инструмент, который может преобразить ваши веб-макеты с банальных на великолепные. Он может показаться подавляющим сначала, но с практикой вы будете создавать сложные макеты с легкостью. Счастливого кодирования, и пусть ваши grids всегда выстраиваются perfectly!

Credits: Image by storyset