Назад к вопросам
Middle
76
questionbank
Что такое схлопывание границ в CSS?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Схлопывание границ (margin collapsing) — это явление в CSS, при котором вертикальные границы двух или более блоков, расположенных рядом, объединяются в одну границу. Размер этой общей границы определяется наибольшим значением из схлопывающихся границ.
Основные правила схлопывания:
- Схлопываются только вертикальные границы (
margin-topиmargin-bottom). Горизонтальные не схлопываются. - Схлопываются только границы соседних элементов, если между ними нет других элементов, заполнения (
padding), границ (border) или блочного содержимого. - Верхняя граница первого дочернего элемента схлопнется с верхней границей его родителя, если между ними нет
padding,borderили другого содержимого. - Нижняя граница последнего дочернего элемента схлопнется с нижней границей его родителя, если между ними нет
padding,borderили другого содержимого. - Верхняя и нижняя границы пустого элемента могут схлопнуться между собой, если у него нет
padding,borderили содержимого. - Если одна из схлопывающихся границ отрицательная, итоговый размер равен сумме положительного и отрицательного значений (или абсолютному значению, если оба отрицательны и суммарное значение меньше нуля).
Пример:
<div class="box1">Element 1</div>
<div class="box2">Element 2</div>
.box1 {
margin-bottom: 20px;
}
.box2 {
margin-top: 30px;
}
В данном случае вертикальное расстояние между box1 и box2 будет 30px (максимальное из 20px и 30px), а не 50px.
Способы предотвращения схлопывания:
- Добавить
paddingилиborderмежду элементами. - Создать новый блок форматирования (например, с помощью
overflow: hidden,display: flow-rootили плавающих элементов). - Использовать
display: inline-block,display: flexилиdisplay: gridдля элементов. - Использовать абсолютное позиционирование.