Чтобы элементы располагались по центру главной оси, нужно задать для justify-contentзначение center.

Курс «Флексбокс, часть 1»

В начале и в конце главной оси [5/31]

Чтобы флекс-элементы располагались в начале главной оси, свойству justify-content нужно задать значение flex-start. Оно же является и значением по умолчанию.

А значение flex-end расположит элементы в конце главной оси.

Обратите внимание, что justify-content: flex-end не меняет порядок элементов, как это происходит при изменении направления оси flex-direction: row-reverse. Элементы просто прижимаются к концу главной оси.

Итого: justify-content: flex-start | center | flex-end;

Равномерное распределение [6/31]

Помните ли вы режим горизонтального выравнивания«по ширине», когда текст распределялся в блоке равномерно, а края текста прижимались к краям блока? Совсем как в этом абзаце.

У флексбокса есть чем-то похожие значения justify-content, которые равномерно распределяют флекс-элементы вдоль главной оси:

· space-between — расстояния между соседними элементами одинаковые, между элементами и краями флекс-контейнера отступов нет.

· space-around — расстояния между соседними элементами одинаковые, между элементами и краями флекс-контейнера есть отступ, равный половине расстояния между соседними элементами.

Сейчас мы добавим третьего кота и поэкспериментируем с этими значениями justify-content.

А пока небольшой итог. Свойство justify-content управляет распределением элементов вдоль главной оси и имеет пять значений:

· значение по умолчанию flex-start,

· flex-end,

· center,

· space-between,

Чтобы элементы располагались по центру главной оси, нужно задать для justify-contentзначение center. - student2.ru

· space-around.

Чтобы элементы располагались по центру главной оси, нужно задать для justify-contentзначение center. - student2.ru

Выравнивание флекс-элементов, align-items [7/31]

Вместо «вертикального» выравнивания во флексбоксе используется свойство для выравнивания элементов вдоль поперечной оси — align-items. Это свойство задаётся для флекс-контейнера.

Его значением по умолчанию является stretch. Именно благодаря этому значению флекс-элементы и растягиваются на всю «высоту» флекс-контейнера. Если флекс-элементам задана высота, то растягиваться они не будут.

Чтобы элементы выровнялись по центру поперечной оси, нужно задать для align-itemsзначение center.А вообще у ниго такие же свойства как и у justify-content.

Чтобы элементы располагались по центру главной оси, нужно задать для justify-contentзначение center. - student2.ru

Короче как я понял, есть две оси, и свойства justify-content и align-item выравнивают каждый по своему

Ещё одно значение свойства align-items — это baseline. Если задать его контейнеру, то флекс-элементы будут выравниваться по базовой линии текста в них. Эта воображаемая линия проходит по нижней части букв.

Если выровнять флекс-элементы по базовой линии, то они выстроятся так, чтобы текст в них был как бы на «одной строке».

Чтобы лучше понять поведение baseline, сравним его с другим значением — flex-start.

Мини-итог. Свойство align-items управляет выравниванием элементов вдоль поперечной оси и имеет пять значений:

· значение по умолчанию stretch,

· flex-start,

· flex-end,

· center,

· baseline.

Курс «Флексбокс, часть 1»

Эгоистичное выравнивание, align-self [10/31]

Распределение элементов по главной оси задаётся для всего флекс-контейнера и на все флекс-элементы действует одинаково. Задать какому-то элементу отличное от других распределение по главной оси нельзя. И это вполне логично, ведь тогда элементы будут «сталкиваться» друг с другом.

C поперечной осью всё проще. Можно сказать, что у каждого элемента она своя, и можно задавать им разное поперечное выравнивание. Для этого используется свойство align-self, которое задаётся для самих флекс-элементов, а не для флекс-контейнера.

У свойства align-self те же самые значения, что и у align-items.

Чтобы элементы располагались по центру главной оси, нужно задать для justify-contentзначение center. - student2.ru

Чтобы элементы располагались по центру главной оси, нужно задать для justify-contentзначение center. - student2.ru

Т.е. вместо align-itemsмы можем отдельно для каждого применить align-self

Перенос флекс-элементов, flex-wrap [13/31]

Что будет, если флекс-элементов в контейнере станет больше, чем может уместиться в один ряд?

· Они будут сжиматься до минимально возможной ширины.

· Даже если им задать ширину явно, механизм флексбокса может её уменьшить.

· Если они перестанут помещаться в контейнер и после уменьшения, то они выйдут за его пределы, но продолжат располагаться в один ряд.

Это чем-то похоже на поведение ячеек в таблице.

Такое поведение можно изменить свойством флекс-контейнера flex-wrap. По умолчанию оно имеет значение nowrap, то есть перенос флекс-элементов на новую строку запрещён.

Значение wrap разрешает перенос флекс-элементов на новую строку, если они не помещаются в контейнер.

Flex-wrap: nowrap;

Flex-wrap:wrap;

Если для flex-wrap задать значение wrap-reverse, то элементы будут переноситься, а ряды будут располагаться в обратном порядке: первый в конце поперечной оси, а последний в начале.

Чтобы элементы располагались по центру главной оси, нужно задать для justify-contentзначение center. - student2.ru

Выравнивание строк флекс-контейнера, align-content [15/31]

Вспомним свойство justify-content, которое управляет распределением флекс-элементов вдоль главной оси.

Есть очень похожее свойство align-content, которое управляет выравниванием рядов флекс-элементов вдоль поперечной оси. У этих свойств почти одинаковые значения:

· flex-start,

· flex-end,

· center,

· space-between,

· space-around,

· и stretch, которое есть у align-content, но нет у justify-content, и является значением по умолчанию.

Свойство align-content связано и со свойством align-items, которое управляет выравниванием флекс-элементов вдоль поперечной оси.

В чём разница между align-content и align-items, когда работает одно, а когда работает другое? Вот ответы:

· Если есть только один ряд флекс-элементов, то работает align-items.

· Если есть несколько рядов, то работает align-content.

· Подчеркнём, что align-content влияет на ряды, а не на отдельные элементы.

В последней версии спецификации это поведение изменилось: теперь правильно, когда align-content выравнивает элементы в многострочном флекс-контейнере, даже если строка в контейнере единственная. Это изменение на момент окончания 2015 года применено только в браузерах Safari и Edge.

Наши рекомендации