Какво е схлопването на граници в CSS?
sobes.tech AI
Отговор от AI
Сливането на граници (margin collapsing) е явление в CSS, при което вертикалните граници на съседни блокове се сливат в една. Размерът на този обединен граница се определя като максималната стойност от сливаните граници.
Сливането се случва в следните случаи:
-
Между съседни елементи: Вертикалните граници на два съседни елемента се сливат.
<p>Параграф 1</p> <p>Параграф 2</p>Ако
<p>имаmargin-bottomиmargin-topсъответно, тези граници могат да се слеят. -
Между родител и първия/последния му дете: Ако родителят няма
border,padding,display: flex,display: grid,overflow: hiddenили други свойства, които създават форматен контекст, неговият горен граница може да се слее сmargin-topна първото дете. Аналогично, долният граница на родителя може да се слее сmargin-bottomна последното дете.<div class="parent"> <p class="child">Детски елемент</p> </div> -
При празен елемент: Ако елементът няма съдържание (
height: 0, безborderиpadding), неговите горен и долен граници могат да се слеят.<div class="empty"></div>
Таблица, илюстрираща резултатите от сливането:
| Margin 1 | Margin 2 | Резултат от сливането |
|---|---|---|
| 10px | 15px | 15px |
| 20px | -5px | 20px |
| -10px | -15px | -10px |
Сливането на граници се случва само във вертикална посока (margin-top и margin-bottom). Хоризонталните граници (margin-left и margin-right) никога не се сливат.
Има начини да се предотврати сливането, като например добавяне на border, padding, използване на display: flex, display: grid, overflow: hidden или създаване на нов форматен контекст с display: flow-root.