У меня есть fiddle, показывающий мой код. Он работает так, как я хочу: в основном это контейнер с 1 элементом строки, который занимает 100% в ширину и два элемента с фиксированной шириной. Если контейнер достаточно большой, он должен оставаться в очереди, иначе они должны быть обернуты.Flex layout overflow внешний контейнер
Не понимаю, почему, когда мой порт просмотра становится меньше, два меньших блока начинают переполняться со стороны за пределами контейнера, и они не сжимаются, как я ожидаю. Я попытался удалить фиксированную ширину и использовать flex-basis, но он разбивает макет.
Это код на скрипке:
<div class="container">
<div class="search-form flex-row">
<span class="block big">hi</span>
<div class="flex-block">
<span class="block">hi</span>
<span class="block">hi</span>
</div>
<span class="block">hi</span>
</div>
</div>
CSS:
.container{
height:100vh;
width:100%;
padding:50px;
}
.search-form {
/* margin-bottom: 0px; */
margin: auto;
height: 100%;
font-size: 18px;
background-color:blue;
}
.flex-row {
width: 100%;
display: flex;
flex-wrap: wrap;
justify-content: space-around;
flex-direction: column;
align-items: center;
}
.flex-block{
display:flex;
flex-wrap:wrap;
justify-content: center;
}
.block{
flex-shrink:1;
width:150px;
background-color:red;
margin:5px;
}
.block.big{
width:100%
}
Я запутался, почему вы обращаетесь к "строк", но с помощью 'Flex-направление: column'. У вас есть фиксированная ширина блоков ... flexbox isn'tgoing, чтобы переопределить это. –
Я говорю о строках, потому что в основном первая строка одного элемента, а вторая - строка из двух элементов. Затем они обертываются как один элемент в строки, так что, как и обычная раскладка столбцов. – MQ87
Ну, как я уже сказал, у вас есть фиксированная ширина ... вы не можете много сделать, кроме как переосмыслить то, что вам нужно (что мне непонятно) и, возможно, то, как вы это делаете. –