Потому что ты добавил float. Посмотри в Chrome Dev Tools, например, и там наверняка заметишь что у элемента, которому ты задал float, не будет высоты (она будет 0). Чтобы это исправить, можно задать явную высоту, что как-то не ок, или "зачистить границы". Здесь тебе в помощь свойство clear: both. Рекомендую поискать как создавать/применять класс clearfix.
.clearfix::after {
disblay: block;
clear: both;
content: '';
}