Существует два основных типа обрушения маржи:
- Свертывание полей между соседними элементами
- Свертывание полей между родительскими и дочерними элементами
Использование отступов или бордюров предотвратит коллапс только в последнем случае. Кроме того, любое значение, overflow
отличное от его default ( visible
), примененного к родителю, предотвратит коллапс. Таким образом, оба overflow: auto
и overflow: hidden
будут иметь одинаковый эффект. Возможно, единственное отличие при использовании hidden
- это непреднамеренное последствие скрытия контента, если родитель имеет фиксированную высоту.
Другие свойства, которые после применения к родителю могут помочь исправить это поведение:
float: left / right
position: absolute
display: inline-block / flex
Вы можете проверить их все здесь: http://jsfiddle.net/XB9wX/1/ .
Я должен добавить, что, как обычно, Internet Explorer является исключением. В частности, в IE 7 поля не сворачиваются, когда для родительского элемента указана какая-то компоновка, например width
.
Источники: статья Sitepoint, Свертывание полей