Ответ 1
Исходная настройка контейнера flex - flex-wrap: nowrap
. Это означает, что гибкие элементы вынуждены оставаться в одной строке.
Вы можете переопределить значение по умолчанию с помощью flex-wrap: wrap
.
Значение гибких элементов display
игнорируется в гибком макете.
Контейнер flex, который является элементом с display: flex
или display: inline-flex
, устанавливает контекст форматирования Flex. Хотя это похоже на контекст форматирования блоков, существуют различия.
Одно из отличий заключается в том, что дети контейнера flex игнорируют свойство display
.
Другое отличие состоит в том, что в контейнере гибких полей поля не сбрасываются, а свойства float
и clear
не влияют.
В гибком контейнере также есть несколько настроек по умолчанию. Среди них:
-
justify-content: flex-start
- гибкие элементы будут складываться в начале строки -
flex-shrink: 1
- гибкие элементы разрешены для сжатия и не будут переполнять контейнер. -
align-items: stretch
- гибкие элементы будут расширяться, чтобы покрыть кросс-размер контейнера. -
flex-direction: row
- элементы гибкости будут выравниваться горизонтально -
flex-wrap: nowrap
- гибкие элементы вынуждены оставаться в одной строке
Обратите внимание на последние два элемента.
Элементы Flex выстраиваются в строку и не могут быть завершены.
Если вы хотите иметь два элемента гибкости в первой строке и третий элемент во второй строке, разрешите контейнеру быть многострочным с flex-wrap: wrap
.
.container {
display: flex;
flex-wrap: wrap;
}
.box {
flex: 0 0 45%;
height: 50px;
margin: 5px;
background-color: lightgreen;
border: 1px solid #ccc;
}
<div class="container">
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
</div>