Современный способ сделать это: CSS Grid.
HTML:
<div class="container">
<div class="element">{...}</div>
<div class="element">{...}</div>
<div class="element">{...}</div>
</div>
CSS:
.container {
display: grid;
grid-gap: 10px;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
}
.element {
border: 2px solid #000;
}
Живой пример: здесь .
repeat(auto-fit, minmax(200px, 1fr));
часть устанавливает ширину столбцов. Каждый столбец занимает 1 часть доступного пространства, но не может занимать менее 200 пикселей. Вместо того, чтобы сжиматься ниже 200px, он оборачивается ниже, так что он даже отзывчив. Вы также можете иметь любое количество столбцов, а не только 3. Они все будут хорошо вписываться.
Если вам нужно ровно 3 столбца, используйте grid-template-columns: repeat(3, 1fr);
. У вас все еще может быть больше элементов, они будут обернуты, будут отзывчивыми, но всегда будут размещаться в 3 колонках.
Подробнее о CSS Grid на MDN или css-tricks .
Он чистый, читаемый, легко обслуживаемый, гибкий, а также простой в использовании!