Margin çökməsi nədir və nə üçün istifadə olunur?
sobes.tech Süni İntellekt
AI-dan cavab
CSS-də marjinal yığılma (margin collapsing) mexanizmi, iki və ya daha çox yan-yana blok elementlərinin şaquli marjlarının, eləcə də valideyn və onun ilk/son uşağının marjlarının toplam deyil, ən böyük olanına yığılması prosesidir.
Yığılma aşağıdakı hallarda baş verir:
- Yan-yana elementlər: Bir elementin
margin-bottomvə növbəti elementinmargin-topu. - Valideyn və ilk/son uşaq: Valideynin
margin-topu və ilk uşağınmargin-topu; valideyninmargin-bottomu və son uşağınmargin-bottomu. Bu, aralarında sərhəd (border), padding, inline məzmun və ya valideyn flex/grid konteyner deyilsə baş verir. - Boş bloklar: Elementin
margin-topu və onunmargin-bottomu, əgər içində məzmun, sərhəd və ya padding yoxdursa.
Yan-yana element nümunəsi:
<div style="margin-bottom: 20px;">Element 1</div>
<div style="margin-top: 30px;">Element 2</div>
Bu halda, elementlər arasındakı məsafə 30px olacaq, 50px deyil.
Valideyn və ilk uşaq nümunəsi:
<div style="margin-top: 40px;">
<div style="margin-top: 30px;">Uşaq element</div>
</div>
Valideynin yuxarı kənarından onun məzmununa qədər məsafə 40px olacaq.
Nəyə görə istifadə olunur:
Margin yığılma mexanizmi, sənədin normal axışında bloklar arasında şaquli məsafələri proqnozlaşdırıla bilən saxlamağa və artıq boşluqları qarşısını almağa kömək edir. Bu, dizaynerlərin paraqraflar və ya başlıqlar üçün marjinləri müstəqil təyin etməsinə imkan verir və brauzer düzgün şəkildə boşluqları birləşdirir.
Necə qarşısını almaq olar:
- Elementlər və ya valideyn və uşaq arasında sərhəd (
border) əlavə etmək. - Elementlər və ya valideyn və uşaq arasında padding əlavə etmək.
- Valideyn elementində
overflowxüsusiyyətinivisibleolmayan dəyərə təyin etmək. - Elementi float etmək (
float). absolutevə yafixedmövqeləndirmə istifadə etmək.- Elementləri Flexbox və ya Grid formatlama kontekstinə çevirmək (valideyn element).
- Elementi inline-block etmək.
/* Valideyn və uşaq üçün qarşısını alma */
.parent {
border-top: 1px solid transparent; /* və ya padding-top */
}
/* Yan-yana elementlər üçün qarşısını alma */
.element + .element {
margin-top: 0; /* və ya border-top */
}