Загрузка...
Загрузка...
Продолжая работу с платформой, вы принимаете условия Политики конфиденциальности и использование файлов cookie.
Margin collapsing — это особенность CSS, при которой внешние отступы (margin) вертикально смежных блоков схлопываются (то есть не складываются, а берётся больший из них).
Эта особенность работает только с вертикальными отступами (margin-top, margin-bottom) и может вызывать неожиданные визуальные эффекты.
<div class="block1">...</div>
<div class="block2">...</div>
.block1 {
margin-bottom: 30px;
}
.block2 {
margin-top: 50px;
}
Что отобразится между блоками?
50px, а не 80px. Потому что отступы схлопнулись (взялся больший).
margin-bottom одного элемента граничит с margin-top другого.padding, border, inline content и т. д.margin родителя.<div class="parent">
<div class="child">Я потомок</div>
</div>
.parent {
margin-top: 30px;
}
.child {
margin-top: 50px;
}
Что произойдёт?
Если .parent не имеет padding, border или content, его margin-top и margin-top потомка схлопнутся до 50px.
padding или border родителюoverflow: hidden / auto / scrolldisplay: flex или grid::before или ::after с content: "" и display: table.parent {
overflow: hidden; /* или auto */
}
| Сценарий | Итоговый margin |
|---|---|
Блок A: | 40px |
Родитель: | 50px |
Пустой блок с | 20px |
Важно:
Схлопывание margin'ов — это нормальное поведение CSS, но оно может стать неожиданным, если не учитывать контекст. Проверяйте родительские блоки и используйте padding или overflow, чтобы контролировать поведение.