Ответ 1
Ответ на "почему" описан хорошо и лаконично здесь. Существуют определенные свойства, которые устанавливают " блок форматирования. А именно:
Поплавки, абсолютно [и фиксированные] позиционированные элементы, блокировать контейнеры (например, встроенные блоки, таблицы-таблицы и заголовки таблиц), которые не являются блочными ящики и блок-боксы с "переполнением", кроме "видимых" (кроме когда это значение было распространено в окне просмотра), установите новый контексты форматирования блоков для их содержимого.
Именно это изменение контекста форматирования блока является причиной того, почему такие решения, как указано выше в комментариях, работают как margin
(а в случае предыдущих float
, padding
следующих элементов притока) работает.