Я вижу несколько проблем с вашим CSS, которые вызывают такое поведение у ваших блоков item .Основная проблема заключается в том, что вы ограничиваете свой контейнер шириной 40%, а затем, когда вы изменяете размер окна, нет места для правильного отображения внутренних блоков.Я бы дал полную ширину: 100% контейнеру, слева: 0 и justify-content: center .Тогда я бы дал поля влево и вправо внутренним элементам.
Итак, ваш CSS примерно такой:
.Container {
position: absolute;
top: 25%;
left: 0;
display: flex;
height: 50%;
width: 100%;
flex-flow: row wrap;
justify-content: center;
}
.item {
width: 16em;
background-color: lightslategrey;
margin: 0 30px;
}
Это частично решает проблему, поскольку ваши внутренние блоки все еще перекрываются, если вы уменьшаете размер окна.Чтобы решить это по-настоящему, вам, вероятно, понадобится mediaquery , чтобы уменьшить внутренние поля при изменении размера окна.
Это может быть что-то вроде этого:
@media all and (max-width: 650px) {
.item {
width: 8em;
}
}
Вот кодекс, чтобы вы могли увидеть результаты: https://codepen.io/annabranco/pen/VEjXOL