Čo je to zhlukovanie okrajov v CSS?
sobes.tech AI
Odpoveď od AI
Margin collapsing je javno v CSS-u, kedy sa susedné bloky zbiehajú do jedného. Veľkosť tohto zbiehajúceho sa marginu je určená ako maximálna hodnota z marginov, ktoré sa zbiehajú.
K zbiehaniu dochádza v týchto prípadoch:
-
Medzi susednými prvkami: Vertikálne marginy dvoch susedných prvkov sa zbiehajú.
<p>Odsek 1</p> <p>Odsek 2</p>Ak
<p>mámargin-bottomamargin-toppríslušne, tieto marginy sa môžu zbiehať. -
Medzi rodičom a jeho prvým/posledným dieťaťom: Ak rodič nemá
border,padding,display: flex,display: grid,overflow: hiddenalebo iné vlastnosti, ktoré vytvárajú kontext formátovania, jeho horný margin sa môže zbiehať smargin-topprvého dieťaťa. Podobne, dolný margin rodiča sa môže zbiehať smargin-bottomposledného dieťaťa.<div class="parent"> <p class="child">Dieťa</p> </div> -
Pri prázdnom prvku: Ak prvok nemá obsah (
height: 0, bezborderapadding), jeho horné a dolné marginy sa môžu zbiehať.<div class="empty"></div>
Tabuľka ilustrujúca výsledky zbiehania:
| Margin 1 | Margin 2 | Výsledok zbiehania |
|---|---|---|
| 10px | 15px | 15px |
| 20px | -5px | 20px |
| -10px | -15px | -10px |
Zbiehanie marginov sa deje iba vo vertikálnom smere (margin-top a margin-bottom). Horizontálne marginy (margin-left a margin-right) sa nikdy nezbiehajú.
Existujú spôsoby, ako zabrániť zbiehaniu, napríklad pridaním border, padding, použitím display: flex, display: grid, overflow: hidden alebo vytvorením nového kontextu formátovania pomocou display: flow-root.