# Сетка

Сетка(grid) - это самый часто используемый механизм в разработке интерфейсов. В силу своей гибкости применение можно ему найти в любом месте приложении. И ее стоит применять в этом месте.

В Dermis сетка способна менять свои характеристики в очень большом диапазоне, что делает ее крайне гибкой.

Важно понимать!

Использование сетки оправдано только в случаях когда сложность блока не велика и стандартного функционала сетки достаточно для покрытия 100% его поведения.

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

# Составные части

Базовый префикс($GRID_PREFIX) сетки: g-.

Сетка делится на 3 базовый блока и один вспомогательный:

  • row - Строка.

    Контейнер относительно которого и строится сетка. Управляет ячейками задавая межячеечные отступы, выравнивая ячейки, располагая ячейки.

  • cell - Ячейка.

    Блок распределения контента.

  • cols - Колонка(и).

    Блок, который управляет размерами любого элемента(чаще ячейки) в рамках заданного количества занимаемым им колонок.

  • container - Контейнер.

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

    Применяется при наличии сетки внутри, или без оной. Основная цель - ограничение контента по ширине. Также защищает страницу от образования горизонтального скролла в случаях использования сетки на максимальную ширину контента.

# Отзывчивость

Механизм отзывчивости - стандартен. Постфиксы с указанием breakpoint'а вида: -md, -sm и так далее.

Используется для модификаторов:

  • Размера отступов между ячейками/строками: .g-row--space_{size}
  • Количества колонок занимаемого элементом: .g-cols--{size}
  • Размера отступов контейнера: .g-container--space_{size}
  • Размера контейнера: .g-container--fit_{size}

# Применение

По умолчанию она делится на 12 колонок $grid-cols-columns-count:

# Межячеечное расстояние

Бывает: none, xs, sm, md, lg, xl.

# Автоматические колонки

Также есть автоматические колонки, которые способны занимать максимальное и минимальное доступное пространство:

# Смещение

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

# Выравнивание

WARNING

Механизм выравнивания делает сетку "слишком" гибким инструментом. Имея такой молоток абсолютно все элементы вдруг начинают казаться гвоздями. Поэтому используйте его с осторожностью и пониманием.

По умолчанию выравнивание включено. Но его можно выключить. Для этого измените $GRID_SHOULD_ALIGN флаг в false значение - и модификаторы выравнивания не будут генерироваться, что уменьшит исходный код.

Все модификаторы выравнивания - адаптивны.

Легко выравнивать ячейки вертикально: .g-row--align_

Выравнивание работает и для отдельных ячеек: .g-cell--align_

Горизонтальное выравнивание: .g-row--justify_, .g-cell--justify_

Вертикальное выравнивание контента: .g-row--content_

# Inline

Также сетка может работать как inline элемент, занимая только требуемое пространство:

# Контейнер

# Отзывчивый шаблон