CSS Flexbox: быстрый и гибкий способ создания макетов

20209ee00f8eda2fe60f6334e0e31bb1

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

Как сделать элемент flex-контейнером

Чтобы применить flexbox к элементам, нужно сделать их родительский элемент flex-контейнером. Для этого достаточно задать ему свойство display: flex или display: inline-flex. Например, если мы хотим сделать элемент

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

css

section {
  display: flex;
}

После этого все дочерние элементы

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

Flex-элементы по умолчанию

Как управлять направлением и порядком flex-элементов

Свойство flex-direction позволяет задать направление главной оси flex-контейнера, по которой будут располагаться flex-элементы. Оно может принимать одно из четырех значений: row, row-reverse, column или column-reverse. Значение row означает, что главная ось будет проходить слева направо, а значение row-reverse — справа налево. Значение column означает, что главная ось будет проходить сверху вниз, а значение column-reverse — снизу вверх. Например, если мы хотим сделать flex-элементы расположенными в колонку, мы можем написать такой CSS-код:

css

section {
  display: flex;
  flex-direction: column;
}

Вот как это будет выглядеть:

Flex-элементы в колонку

Свойство order позволяет задать порядок flex-элементов внутри flex-контейнера. Оно принимает целое число, которое указывает на позицию flex-элемента. По умолчанию все flex-элементы имеют порядок 0, что означает, что они будут расположены в том же порядке, что и в HTML-коде. Чтобы изменить порядок flex-элемента, нужно задать ему свойство order с отрицательным или положительным числом. Чем меньше число, тем раньше flex-элемент будет расположен. Например, если мы хотим сделать первый flex-элемент последним, а последний — первым, мы можем написать такой CSS-код:

css

section {
  display: flex;
}
article:first-child {
order: 1;
}
article:last-child {
order: -1;
}

Flex-элементы с измененным порядком

Как управлять выравниванием и распределением flex-элементов

Свойство justify-content позволяет задать, как flex-элементы распределяют свободное пространство по горизонтали в flex-контейнере. Оно может принимать одно из шести значений: flex-start, flex-end, center, space-between, space-around или space-evenly. Значение flex-start означает, что flex-элементы будут прижаты к началу главной оси, а значение flex-end — к концу главной оси. Значение center означает, что flex-элементы будут выровнены по центру главной оси. Значение space-between означает, что flex-элементы будут равномерно распределены по главной оси, при этом первый flex-элемент будет прижат к началу, а последний — к концу. Значение space-around означает, что flex-элементы будут равномерно распределены по главной оси, при этом у каждого flex-элемента будет одинаковый отступ с обеих сторон. Значение space-evenly означает, что flex-элементы будут равномерно распределены по главной оси, при этом отступ между flex-элементами будет равен отступу от краев flex-контейнера. Например, если мы хотим сделать flex-элементы распределенными по центру, мы можем написать такой CSS-код:

css

section {
  display: flex;
  justify-content: center;
}

Вот как это будет выглядеть:

Flex-элементы с выравниванием по центру

Свойство align-items позволяет задать, как flex-элементы выравниваются по вертикали в flex-контейнере. Оно может принимать одно из шести значений: stretch, flex-start, flex-end, center, baseline или first baseline. Значение stretch означает, что flex-элементы будут растянуты по высоте flex-контейнера, если у них не задано свойство height или align-self. Значение flex-start означает, что flex-элементы будут прижаты к началу побочной оси, а значение flex-end — к концу побочной оси. Значение center означает, что flex-элементы будут выровнены по центру побочной оси. Значение baseline означает, что flex-элементы будут выровнены по базовой линии текста, а значение first baseline — по базовой линии текста первого flex-элемента.

css

section {
  display: flex;
  align-items: center;
}

Вот как это будет выглядеть:

Flex-элементы с выравниванием по центру

Свойство align-self применяется к отдельным flex-элементам и позволяет переопределить значение align-items только для конкретного элемента. Например, если мы хотим сделать первый flex-элемент выровненным к началу побочной оси, а второй — к концу, мы можем написать такой CSS-код:

css

section {
  display: flex;
}
article:first-child {
align-self: flex-start;
}
article:last-child {
align-self: flex-end;
}

Вот как это будет выглядеть:

Flex-элементы с индивидуальным выравниванием

Как управлять гибкостью flex-элементов

Свойство flex позволяет задать гибкость flex-элемента, то есть его способность увеличиваться или уменьшаться в размерах. Оно принимает два значения: первое значение определяет, насколько flex-элемент может увеличиваться, а второе — насколько он может уменьшаться. Значение 0 означает, что flex-элемент не будет изменять свой размер, а значение 1 означает, что он может изменять свой размер в соответствии с доступным свободным пространством. Например, если мы хотим, чтобы первый flex-элемент занимал всю доступную ширину, а второй занимал только свою минимальную ширину, мы можем написать такой CSS-код:

css

section {
display: flex;
}
article:first-child {
flex: 1;
}
article:last-child {
flex: 0;
}

Вот как это будет выглядеть:

Flex-элементы с разной гибкостью

Заключение

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

Надеюсь, эта статья была полезной для вас! Если у вас есть дополнительные вопросы или нужна дополнительная информация, не стесняйтесь спрашивать. Удачи с использованием CSS Flexbox в ваших проектах!

© Habrahabr.ru