Заменить все float: left; на display: inline-block;
Это даст другой алгоритм заполнения страницы блоками. Конкретно в этом случае первый синий блок окажется прижат к левому краю, по высоте сразу после .foo
* Не забыть вставить что-то типа margin-left: -0.25em; для каждого из блоков, чтобы нивелировать ширину пробела, которая появляется между элементами с display: inline-block; Впрочем, есть и другие техники на этот счёт.