Причина переполнения: автоматическое изменение родительского элемента div для разрешения вложенного поля margin-top состоит в том, что создает новый контекст форматирования. Любой div, который позиционируется как абсолютный, фиксированный, с плавающей запятой или с переполнением, отличным от видимого, создает новый контекст форматирования. Затем родительский div становится корнем этого нового контекста форматирования, а сворачивающиеся поля не применяются к корневым элементам. *
Подробнее:
Контексты форматирования могут быть встроенными или блочными, и только контексты форматирования блоков сворачивают свои поля. Эти контексты форматирования формируют поток документа.
Контекстом форматирования блока являются просто все элементы уровня блока (например, div, p, table), расположенные один за другим вертикально внутри содержащего блока до конца документа / контейнера или до установления нового контекста форматирования.
В случае вложения вершина поля дочернего элемента сворачивается с вершиной поля родителя, поскольку оба элемента div являются частью контекста форматирования блока. Если для параметра overflow установлено значение auto, родительский div становится контейнером нового контекста форматирования, а дочерний - первым элементом блока внутри него. Таким образом, эти два поля больше не являются "смежными", так как родительский div теперь является корнем.
Надеюсь, это поможет.
Модель коробки:
http://www.w3.org/TR/CSS2/box.html#collapsing-margins
Модель визуального форматирования:
http://www.w3.org/TR/CSS2/visuren.html#normal-flow