Ответ 1
Исходная настройка контейнера flex составляет align-content: stretch
.
Это означает, что несколько линий гибких элементов будут равномерно распределены вдоль поперечной оси.
Чтобы отменить это поведение, примените align-content: flex-start
к контейнеру.
Когда вы работаете в однострочном контейнере Flex (т.е. flex-wrap: nowrap
), свойства, используемые для распределения пространства вдоль поперечной оси, это align-items
и align-self
.
Когда вы работаете в контейнере multi-line flex (т.е. flex-wrap: wrap
) – как в вопросе – свойство, используемое для распределения гибких линий (строк/столбцов) вдоль поперечной оси, align-content
.
Из спецификации:
8.3. Поперечное осевое выравнивание: свойства
align-items
иalign-self
align-items
устанавливает выравнивание по умолчанию для всех элементов контейнера flex, включая анонимные элементы гибкости.align-self
разрешает переопределение по умолчанию для отдельных элементов гибкости.8.4. Гибкие линии упаковки:
align-content
СвойствоСвойство
align-content
выравнивает строки гибких контейнеров в пределах гибкий контейнер, когда имеется дополнительное пространство в поперечной оси, аналогично какjustify-content
выравнивает отдельные элементы в пределах основной оси. Обратите внимание: это свойство не влияет на однострочный контейнер flex.
Свойство align-content
принимает шесть значений:
-
flex-start
-
flex-end
-
center
-
space-between
-
space-around
-
stretch
Здесь определение для stretch
:
stretch
Линии растягиваются, чтобы заняться оставшимся пространством. Если оставшееся свободное пространство отрицательное, это значение идентично
flex-start
. В противном случае свободное пространство распределяется поровну между всеми линиями, увеличивая их размер поперечного сечения.
Другими словами, align-content: stretch
на поперечной оси аналогично flex: 1
на главной оси.