Элементы уровня блока по умолчанию занимают всю ширину содержащего их блока. Фактически это преобразуется в width: 100%
, который устанавливает разрыв в потоке контента в горизонтальном направлении.
Таким образом, элементы гибкости могут по умолчанию обертываться в контейнер с направлением строки.
Однако ничто в HTML или CSS не устанавливает высоту по умолчанию для элементов уровня блока. Высота определяется содержанием (height: auto
).
Это означает, что элементы будут течь вертикально, без каких-либо причин для разрушения.
(Я предполагаю, что где-то в процессе эволюции, возможно, на основе исследований удобства использования было решено, что для веб-приложений нормально расширяться по вертикали, но не по горизонтали.)
Вот почему flexbox не переносит элементы автоматически в направлении столбца. Он требует, чтобы высота была определена автором, чтобы служить точкой излома.
Однако часто высота макета является динамической, поэтому конкретную высоту установить нельзя. Это делает flexbox непригодным для упаковки элементов в направлении столбца. Прекрасной альтернативой является Grid Layout CSS, для которого не требуется высота. установка на контейнере:
div {
display: grid;
grid-gap: 10px;
}
p:nth-child(3n + 1) {
grid-row: 1;
background-color: aqua;
}
p:nth-child(3n + 2) {
grid-row: 2;
background-color: orange;
}
p:nth-child(3n + 3) {
grid-row: 3;
background-color: lightgreen;
}
p {
margin: 0;
padding: 10px;
}
<div>
<p>ONE</p>
<p>TWO</p>
<p>THREE</p>
<p>FOUR</p>
<p>FIVE</p>
<p>SIX</p>
<p>SEVEN</p>
<p>EIGHT</p>
<p>NINE</p>
</div>
Поддержка браузером CSS Grid
- Chrome - полная поддержка с 8 марта 2017 г. (версия 57)
- Firefox - полная поддержка с 6 марта 2017 г. (версия 52)
- Safari - полная поддержка с 26 марта 2017 г. (версия 10.1)
- Edge - полная поддержка с 16 октября 2017 г. (версия 16)
- IE11 - нет поддержки текущей спецификации; поддерживает устаревшую версию
Вот полная картина: http://caniuse.com/#search=grid
person
Michael Benjamin
schedule
07.05.2017
auto
), она просто продолжит расти, поэтому для нее собственно обернуть, ему нужна заданная высота. - person Ason   schedule 07.05.2017flex: 1
заставит их заполнить оставшееся пространство либо по горизонтали для гибкой строки, либо по вертикали для гибкой колонки. - person Ason   schedule 07.05.2017flex:1
сделала свое дело! Спасибо! Вы сэкономили мне много времени! Если вы отправите ответ, я его приму! - person Frank   schedule 07.05.2017flex: 1
на мне :) - person Ason   schedule 07.05.2017