Свойства, применяемые к родительскому элементу — контейнеру
Свойство display
Свойство display
является многоцелевым свойством, определяющим как элемент будет отрисован на странице или как его дочерние элементы будут располагаться внутри.
В данном случае, мы имеем дело со вторым случаем — значение flex
влияет на расположение дочерних элементов. Свойство применяется к контейнеру, в котором располагаются элементы и влияет именно на отображение элементов внутри контейнера.
Существует много различных значений свойства display
, сейчас мы рассмотрим только flex
и block
.
Тут будет CSS код
Свойство flex-direction
Свойство применяется исключительно к флекс-контейнеру и задаёт направление основной оси в этом контейнере, а также направление вдоль этой оси (nomal
или reverse
), тем самым определяет как флекс-элементы располагаются в контейнере.
Oсновная ось: основная направляющая флекс-контейнера, вдоль которой располагаются флекс-элементы. По умолчанию, если не заданы другие параметры, ось проходит слева направо.
Дополнительная (побочная, перпендикулярная) ось: ось, идущая перпендикулярно основной. Если параметры основной оси не изменены, то дополнительная ось пройдет в направлении сверу вниз.
Тут будет CSS код
Свойство flex-wrap
Свойство применяется к флекс-контейнеру и задаёт возможность переноса флекс-элементов на новую строку, если они не помещаются в рамках флекс-контейнера. По умолчанию флекс-элементы выстраиваются в ряд и стараются уместиться в контейнере «ужимая» свою ширину.
В данном примере специально в контейнер помещено много флекс-элементов с фиксированной шириной и, как видим, при значении nowrap
флекс элементы пытаются ужаться и втиснуться в контейнер.
Тут будет CSS код
Свойство justify-content
Свойство применяется к флекс-контейнеру и определяет как браузер распределяет свободное пространство внутри флекс-контейнера вдоль основной оси.
Данное свойство работает, если внутри флекс-контейнера имеется свободное пространство.
Тут будет CSS код
Свойство align-items
Это свойство определяет как флекс-элементы располагаются вдоль поперечной оси внутри флекс-контейнера.
Oсновная ось: основная направляющая флекс-контейнера, вдоль которой располагаются флекс-элементы. По умолчанию, если не заданы другие параметры, ось проходит слева направо.
Дополнительная (побочная, перпендикулярная) ось: ось, идущая перпендикулярно основной. Если параметры основной оси не изменены, то дополнительная ось пройдет в направлении сверу вниз. Можно вообразить, что свойство align-items
это версия justify-content
для дополнительной оси (перпендикулярной основной).
Тут будет CSS код
Свойство align-content
Это свойство выравнивает строки флекс-элементов в пределах флекс-контейнера, когда есть дополнительное пространство на поперечной оси, подобно тому, как justify-content
выравнивает отдельные элементы в пределах основной оси.
Свойство не действует, когда есть только одна строка флекс-элементов по причине того, что для выравнивания строк их необходимо как минимум две.
Тут будет CSS код
Свойства, применяемые ко флекс-элементу
Свойство align-self
Свойство выравнивает выбраный флекс-элемент — позволяет переопределить выравнивание по умолчанию (или указанное с помощью align-items
) для отдельных флекс-элементов.
Значения свойств одинаковы со свойством align-items
, разница лишь в том, что align-self
влияет на конкретный флекс-элемент, в то время как свойство align-items
применяется к флекс-контейнеру и распространяет свое действие на все флекс-элементы внутри него.
Тут будет CSS код
Свойство order
По умолчанию flex
элементы располагаются в исходном порядке, согласно порядку в разметке документа. Однако свойство order
может этот порядок изменить. Оно определяет порядок появления выбранного флекс-элемента во флекс-контейнере.
Элементы располагаются в восходящем порядке по значению свойства order
: чем выше значение, тем правее встает элемент по отношению к другим элементам с более низким значением order
. Если у нескольких элементов значение order
одинаково, то они располагатся согласно порядку в разметке документа.
Важно отметить, что свойство order
переставляет элементы лишь визуально, не нарушая изначальный порядок разметки документа.
По умолчанию значение order
равняется 0.
Тут будет CSS код
Свойство flex-grow
-
flex item 1
-
flex item 2
-
flex item 3
Это свойство определяет способность флекс-элемента растягиваться в случае необходимости. Оно принимает значения в виде целых положительных чисел, которое служит пропорцией — какое количество доступного пространства внутри гибкого контейнера должен занимать элемент.
По умолчанию значение равно 0 — элементы не растягиваются и не занимают свободное пространство.
Если одному элементу задать значение 1, то он займет все доступное свободное пространство при условии, что у остальных злементов значение свойства flex-grow
равняетя 0.
Если для всех элементов flex-grow
установлено значение 1, оставшееся пространство в контейнере будет равномерно распределено между всеми дочерними элементами.
Если один из элементов имеет значение 2, другой значение 1, третий элемент значение равным 0, то элемент со значением 2 займет в два раза больше свободного места, чем остальные элемент со значением 1, элемент со значением 0 не изменит свою ширину.
Тут будет CSS код
Свойство flex-shrink
-
flex item 1
-
flex item 2
-
flex item 3
Если ширина флекс-элемента, или сумма ширин флекс-элементов, больше, чем ширина флекс-контейнера, то такие флекс-элементы будут сужаться, чтобы разместиться в своем контейнере. Разница между суммой ширин флекс-элементов и шириной флекс-контейнера, называется отрицательным свободным пространством.
Значение свойства flex-shrink
по умолчанию равно 1 и устанавливает коэффициент сжатия flex-элемента относительно других flex-элементов при распределении отрицательного свободного пространства.
Это свойство определяет способность флекс-элемента сжиматься в случае необходимости. Как и flex-grow
, принимает значения в виде целых положительных чисел, но определяет то, насколько элемент будет сужаться по отношению к другим флекс-элементам, чтобы разместиться с ними в одну строку.
При значении, отличном от 0 элементы могут сужаться, если их ширина (сумма ширин) больше, чем ширина флекс-контейнера.
Если элементу задать значение 0, то он «расправит плечи», если его ширина больше ширины флекс-контейнера, или сумма ширин флекс-элементов больше, чем ширина их контейнера. Значение 0 запрещает флекс-элементу сужаться.
Если увеличивать значение flex-shrink
, то увидим как элемент сужается по отношению к другим флекс-элементам.
Тут будет CSS код
Свойство flex-basis
-
flex item 1
-
flex item 2
-
flex item 3
Это свойство определяет базовый (начальный, основной) размер элемента по умолчанию до распределением оставшегося пространства в соответствии со свойствами flex-grow
и flex-shrink
.
Конечная ширина флекс-элемента будет зависеть от базовой ширины, установленно свойством flex-basis
, и значений flex-grow
, flex-shrink
, а также от величины контента.
По умолчанию значение auto
.
Если установлено значение 0, дополнительное пространство вокруг содержимого не учитывается.
Тут будет CSS код