Вы устанавливаете ширину на 20%, что означает, что вы можете иметь ровно 5 элементов подряд. Если вы хотите, чтобы следующий элемент был перенесен в новую строку, вам нужно добавить flex-wrap: wrap
Если вы хотите, чтобы элементы всегда охватывали 100%, независимо от их количества, просто не указывайте значение виджета.
.flex {
display: flex;
background: blue;
}
.flex--element {
background: green;
flex-grow: 1;
}
<div class="flex">
<div class="flex--element">
Element
</div>
<div class="flex--element">
Element
</div>
<div class="flex--element">
Element
</div>
<div class="flex--element">
Element
</div>
</div>