Flex растут / сжимаются не работают, если у вас установлен явный рост / ширина. Ваша flex-column
версия работает, потому что у вас не установлена высота. Удалите .item{width:49%;}
, и горизонтальная версия тоже работает.
Если вы хотите, чтобы он был упакован, используйте flex-wrap
и flex-basis:50%
, но это будет делать странные вещи, если они растут / уменьшаются.
html, body {
width: 100%;
height: 100%;
margin: 0;
padding: 0;
border: 0;
overflow: hidden;
}
.container {
display: flex;
flex-direction: column;
height: 100%;
flex-wrap: wrap;
}
.item {
flex-grow: 1;
flex-shrink: 1;
flex-basis: auto;
transition: all .2s;
}
.item:hover {
flex-grow: 1.2;
}
<div class="container">
<div class="item" style="background: red">a</div>
<div class="item" style="background: green">b</div>
<div class="item" style="background: blue">c</div>
<div class="item" style="background: purple">d</div>
</div>