Почему блоки выходят за блок родителя?
Из-за свойства "float". Решения: применить к родительскому блоку хак clearfix, либо (лучше) использовать flexbox для выравнивания элементов.
Потому что используете float