#html #css
Вопрос:
У меня возникли проблемы с сеткой, которую я настраиваю. Я пытаюсь настроить сетку, которая занимает 2 коробки разного размера и может обернуть их соответствующим образом, но они не упаковываются должным образом. Я хочу, чтобы поля оставались прежними, но содержимое соответствовало их максимальной ширине.
.container {
background: red;
height: 400px;
padding: 20px;
display: flex;
flex-wrap: wrap;
}
.box1 {
background: green;
height: 20px;
max-width 30px;
flex: 1;
margin: 3px;
}
.box2 {
background: pink;
height: 20px;
max-width 50px;
flex: 1;
margin: 3px;
}
<div class="container">
<div class="box1"></div>
<div class="box2"></div>
<div class="box1"></div>
<div class="box1"></div>
<div class="box2"></div>
<div class="box2"></div>
<div class="box2"></div>
<div class="box1"></div>
<div class="box2"></div>
<div class="box1"></div>
<div class="box1"></div>
<div class="box1"></div>
<div class="box2"></div>
<div class="box1"></div>
<div class="box2"></div>
<div class="box1"></div>
<div class="box1"></div>
<div class="box1"></div>
</div>
<div class="container">
<div class="box1"></div>
<div class="box2"></div>
<div class="box2"></div>
<div class="box1"></div>
<div class="box1"></div>
<div class="box1"></div>
</div>
Пример желаемого внешнего вида:
------------------------------------- | | | [ BOX1 ] [ BOX1 ] [ BOX2 ] | | [ BOX1 ] [ BOX2 ] [ BOX1 ] | | [ BOX1 ] [ BOX1 ] [ BOX1 ] [ BOX1 ]| | | _____________________________________
Ответ №1:
Выполнение этого с помощью flex box было бы головной болью, это гораздо проще сделать с помощью css-сетки, здесь:
.container {
background: red;
padding: 20px;
display: grid;
grid-template-columns: repeat( auto-fit, 25% );
flex-wrap: wrap;
}
.box1 {
background: green;
height: 20px;
width 25%;
flex: 1;
margin: 3px;
}
.box2 {
background: pink;
height: 20px;
width 50%;
flex: 1;
grid-column: auto / span 2;
margin: 3px;
}
<div class="container">
<div class="box1"></div>
<div class="box1"></div>
<div class="box2"></div>
<div class="box1"></div>
<div class="box2"></div>
<div class="box1"></div>
<div class="box1"></div>
<div class="box1"></div>
<div class="box1"></div>
<div class="box1"></div>
</div>