Модели отображения

Блочная модель

display: block;

Блочные элементы располагаются один над другим, вертикально

Блок стремится расшириться на всю доступную ширину. Можно указать ширину и высоту явно.

Content
Padding + content
150x150

Гибкий контейнер - FlexBox

display: flex;

Представляет собой способ компоновки элементов, в основе которого лежит идея оси.

Flexbox состоит из гибкого контейнера (flex container) и гибких элементов (flex items). Гибкие элементы могут выстраиваться в строку или столбик, а оставшееся свободное пространство распределяется между ними различными способами.

Главная ось
Поперечная ось
Content
Padding + content
150x150

Порядок отображения во FlexBox

flex-direction: row;

flex-direction: row-reverse;

flex-direction: column;

flex-direction: column-reverse;

Content
Padding + content
150x150

Управление многострочностью во FlexBox

flex-wrap: nowrap;

flex-wrap: wrap;

flex-wrap: wrap-reverse;

Content
Padding + content
150x150
150x150
150x150

Гибкость flex-элементов

Важнейшим моментом гибкого макета является возможность сгибать flex-элементы, изменяя их ширину / высоту

Рост flex-элементов:

flex-grow: 0;

flex-grow: 1;

flex-grow: <число>

Content
Padding + content
150x150

Гибкость flex-элементов

Сжатие flex-элементов

flex-shrink: 1;

flex-shrink: 0;

flex-shrink: <число>

Content
Padding + content
150x150
150x150
150x150

Гибкость flex-элементов

Базовый размер flex-элементов

flex-basis: auto;

flex-basis: 100%;

flex-basis: <число%>

Content
Padding + content
150x150

Выравнивание во Flexbox

Выравнивание по главной оси

justify-content: flex-start;

justify-content: flex-end;

justify-content: center;

justify-content: space-between;

justify-content: space-around;

Content
Padding + content
150x150

Выравнивание во Flexbox

Выравнивание по поперечной оси

align-items: stretch;

align-items: flex-start;

align-items: flex-end;

align-items: center;

align-items: baseline;

Content
Padding + content
150x150

Выравнивание flex-элементов

align-self: auto;

align-self: flex-start;

align-self: flex-end;

align-self: center;

align-self: baseline;

align-self: stretch;

Content
Padding + content
150x150

Сетка - Grid

display: grid;

Модуль макета CSS сетки предлагает систему компоновки на основе сетки, со строками и столбцами.

Макет сетки состоит из родительского элемента, с одним или несколькими дочерними элементами.

Content
Padding + content
150x150
150x150

Размеры Grid

grid-template-columns: 1fr 1fr;
grid-template-rows: 1fr 1fr 1fr;

grid-template-columns: 100px 1fr 100px;
grid-template-rows: 1fr 1fr;

grid-template-columns: 1fr 1fr;
grid-template-rows: 100px 1fr 50px;

Content
Padding + content
150x150
150x150

Отступы между элементами Grid

grid-column-gap: 10px;
grid-row-gap: 2rem;

grid-column-gap: 0;
grid-row-gap: 0;

Content
Padding + content
150x150
150x150

Выравнивание элементов Grid

Выравнивание вдоль столбцов

justify-items: stretch;

justify-items: start;

justify-items: end;

justify-items: center;

Content
Padding + content
150x150
150x150

Выравнивание элементов Grid

Выравнивание вдоль строк

align-items: stretch;

align-items: start;

align-items: end;

align-items: center;

Content
Padding + content
150x150
150x150

Настройка элементов Grid

grid-column-start: 1;
grid-column-end: 1;
grid-row-start: 1;
grid-row-end: 1;

Определяют местоположение в сетке ссылаясь на конкретные ячейки. grid-column-start/grid-row-start - это ячейки с которой начинается элемент, а grid-column-end/grid-row-end - это ячейки на которой элемент заканчивается.

Content
Padding + content
150x150
150x150

Выравние отдельных элементов Grid

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

justify-self: stretch;

justify-self: start;

justify-self: end;

justify-self: center;

Content
Padding + content
150x150
150x150

Выравние отдельных элементов Grid

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

align-self: stretch;

align-self: start;

align-self: end;

align-self: center;

Content
Padding + content
150x150
150x150

Строчная модель

Элементы выстраиваются друг за другом, как, по сути, обычные буквы в строке.

display: inline;

display: inline-block;

display: inline-flex;

display: inline-grid;

Content
Padding + content
150x150
150x150

Строчная модель

Выравнивание строчных элементов.

vertical-align: baseline;

vertical-align: top;

vertical-align: middle;

vertical-align: bottom;

Content
Padding + content
150x150
150x150