Что такое схлопывание границ
Схлопывание границ (или схлопывание отступов, margin collapsing) — это поведение CSS, при котором вертикальные отступы (margins) соседних блоков могут быть объединены (схлопнуты) в один отступ. Это позволяет избежать удвоения вертикальных отступов между элементами и упрощает их управление.
Основные правила
1. Смежные вертикальные отступы:
Когда два вертикальных отступа соседних блоков соприкасаются, они схлопываются в один. Размер схлопнутого отступа равен наибольшему из двух схлопывающихся отступов.
```html
<div class="block1"></div>
<div class="block2"></div>
```
В данном случае итоговый отступ между `.block1` и `.block2` будет 30px, а не 50px.
2. Родитель и первый/последний дочерний элемент:
Если первый или последний дочерний элемент имеет вертикальный отступ, он схлопывается с отступом родительского элемента, если между ними нет границ, внутреннего отступа или контента.
```html
<div class="parent">
<div class="child"></div>
</div>
```
В этом случае итоговый отступ сверху для `.child` будет 20px, так как отступ `.child` схлопывается с отступом родителя.
3. Пустые блоки:
Если блок не содержит контента, границ или внутреннего отступа, его вертикальные отступы также могут схлопываться.
Примеры
Схлопывание между соседними элементами
```html
<div class="box1">Box 1</div>
<div class="box2">Box 2</div>
```
Итоговый отступ между `.box1` и `.box2` будет 30px.
Схлопывание границ родителя и первого/последнего дочернего элемента
```html
<div class="container">
<div class="content">Content</div>
</div>
```
Итоговый верхний отступ для `.content` будет 25px, так как отступы схлопываются.
Исключения и предотвращение схлопывания
- Границы или внутренние отступы:
Если между элементами добавить границу или внутренний отступ, схлопывания не произойдет.
```css
.parent {
padding-top: 1px;
}
```
- Flexbox и Grid:
Элементы, расположенные с помощью Flexbox или Grid, не схлопывают свои отступы.
- Блоки с `overflow: hidden`, `position: absolute`, или `display: inline-block`:
Такие блоки не участвуют в схлопывании отступов.
Схлопывание границ — это процесс объединения вертикальных отступов соседних блоков в один, чтобы избежать удвоения отступов. В результате итоговый отступ равен наибольшему из схлопывающихся отступов.
June 1, 2024, easyoffer