Классика float
После float’ов контейнер «схлопывается». Способы:
clear: both на следующем элементе.
- Clearfix:
::after { content: ""; display: table; clear: both; } (или display: block).
- Новый BFC у родителя:
overflow: auto/hidden, лучше display: flow-root.
- Уйти от float: flex/grid.
.row::after {
content: '';
display: block;
clear: both;
}
.modern { display: flow-root; }
Итог
clear на сиблинге или BFC/flow-root у родителя; в новых вёрстках float почти не нужен.