Когда вы перемещаете элемент блока, вы говорите браузеру расположить его рядом с предыдущим перемещаемым объектом, если контейнер достаточно широк (в противном случае он упадет ниже предыдущего объекта).
Когда вы перемещаете объект, вы по сути вынимаете его из потока документов.Плавающий объект является частью родительского контейнера, но его стиль модели коробки (ширина, высота и т. Д.) Не рассчитывается в родительский контейнер.Поэтому, если в родительском контейнере есть куча плавающих элементов, его высота будет равна нулю (если высота не фиксирована), поскольку высота плавающего элемента игнорируется.
Чтобы это исправить, вынеобходимо очистить поплавки, что в основном означает, что порядок будет восстановлен.
Либо поставьте div с clear: both;в нижней части родительского контейнера или поместите этот класс clearfix в родительский контейнер:
/* Contain floats: nicolasgallagher.com/micro-clearfix-hack/ */
.clearfix:before, .clearfix:after { content: ""; display: table; }
.clearfix:after { clear: both; }
.clearfix { zoom: 1; }
Это было жестоко упрощенное объяснение.Подробнее о поплавках и расчистке здесь: http://dev.opera.com/articles/view/35-floats-and-clearing/