<div class="wrapper">
<div class="col"></div>
<div class="col"></div>
<div class="col"></div>
<div class="col"></div>
</div
СSS
.wrapper {
display: flex;
flex-wrap: wrap;
}
.col {
width: 50%;
height: 100px;
border: 1px solid red;
}
.col:nth-child(2n) {
margin-left: 20px
}
Когда не указываешь flex-wrap, то браузер подстраивает ширину элементов и задает им фиксированные отступы. Мне нужно такое же поведение с flex-wrap Чтобы колонки тянулись, при этом у них был фиксированный отступ, при этом они еще и переносились правильно(2 колонки в строке)
Для установки ширины колонки используйте функцию calc():
* {
box-sizing: border-box;
}
.wrapper {
display: flex;
flex-wrap: wrap;
}
.col {
width: calc((100% - 20px) / 2);
height: 100px;
border: 1px solid red;
}
.col:nth-child(2n) {
margin-left: 20px
}
<div class="wrapper">
<div class="col"></div>
<div class="col"></div>
<div class="col"></div>
<div class="col"></div>
</div>
Поддержку браузерами можно увидеть на caniuse.
UPDATE с учетом комментария про calc().
Несколько костыльный получился вариант, но работает так, как вам и нужно:
* {
box-sizing: border-box;
}
.wrapper {
display: flex;
flex-wrap: wrap;
padding: 0 10px;
}
.col {
width: 50%;
height: 100px;
border: 1px solid red;
margin: 0 10px;
}
.col:nth-child(2n-1) {
margin-left: -10px;
}
.col:nth-child(2n) {
margin-right: -10px;
}
<div class="wrapper">
<div class="col"></div>
<div class="col"></div>
<div class="col"></div>
<div class="col"></div>
</div>
Сборка персонального компьютера от Artline: умный выбор для современных пользователей