Ответ 1
Из того, что я видел в реализациях Chrome и Opera для Flexbox, для столбца flex-direction
требуется ограничение высоты элемента, в противном случае он будет продолжать расширяться по вертикали. Это не должно быть фиксированным значением, это может быть процент.
Тем не менее, макет, который вы хотите для своих элементов .group
, также может быть достигнут с помощью модуля CSS Columns. Поток элементов будет похож на поток ориентации столбца flexbox, но он будет создавать столбцы до тех пор, пока для них будет достаточно ширины, независимо от того, как долго находится документ.
http://jsfiddle.net/Yht4V/8/ (вам придется извинить отсутствие префиксов)
html {
height: 100%;
}
body {
height: 100%;
display: flex;
flex-flow: column nowrap;
}
h1 {
padding: 1em;
}
#content {
padding: 10px;
background-color: #eee;
display: flex;
flex-grow: 1;
}
#content > .group {
margin: 10px;
padding: 10px;
border: 1px solid #cfcfcf;
background-color: #ddd;
flex: 1 1 auto;
}
#content > .group:first-child {
columns: 10em;
flex-grow: 2;
}
#content > .group .item {
margin: 10px;
padding: 10px;
background-color: #aaa;
break-inside: avoid;
}
#content > .group .item:first-child {
margin-top: 0;
}
Оставив это как кучу вложенных flexboxes, это было примерно так же близко, как я мог его получить:
http://jsfiddle.net/Yht4V/9/ (опять же, без префиксов)
html {
height: 100%;
}
body {
height: 100%;
display: flex;
flex-flow: column nowrap;
}
h1 {
padding: 1em;
}
#content {
padding: 10px;
background-color: #eee;
display: flex;
flex: 1 1 auto;
height: 100%;
width: 100%;
}
#content > .group {
margin: 10px;
padding: 10px;
border: 1px solid #cfcfcf;
background-color: #ddd;
display: flex;
flex-flow: column wrap;
flex: 1 1 30%;
max-height: 100%;
}
#content > .group .item {
margin: 10px;
padding: 10px;
background-color: #aaa;
}