Seriya: CSS Basics Dars 8

CSS Asoslari - 8-dars

Margin collapsing va normal flow tushunchalarini o'rganing. Margin collapsing qachon va qanday ishlashini, normal flow nima ekanligini va qachon buzilishini tushuning.

8-dars

O'zing nomla

Bu darsda margin collapsing va normal flow tushunchalarini o'rganamiz.

1. Margin collapsing nima?

๐Ÿง  Margin collapsing degani nima?

Margin collapsing โ€” bu holat:

Ikki yoki undan ortiq vertical marginlar qo'shib ketmaydi, balki eng kattasi yutib ketadi.

โ— Bu faqat vertikal (top/bottom) marginlarda bo'ladi โ— Horizontal (left/right) marginlar hech qachon collapse bo'lmaydi

๐Ÿ“ฆ 1-holat: Ketma-ket elementlar

<div class="a"></div>
<div class="b"></div>
.a {
  margin-bottom: 30px;
}

.b {
  margin-top: 20px;
}

โ“ Savol: orasi nechchi px?

โŒ 30 + 20 = 50px emas โœ… 30px

๐Ÿ‘‰ Kattasi yutdi โ†’ 30px

๐Ÿงฑ 2-holat: Ota va bola (eng chalkash joy)

<div class="parent">
  <div class="child"></div>
</div>
.parent {
  background: lightgray;
}

.child {
  margin-top: 40px;
}

โ“ Savol: bola pastga tushadimi?

โŒ Yo'q ๐Ÿ‘‰ Ota element yuqoridan siljiydi

Bu ko'pchilikni hayron qoldiradi ๐Ÿ˜ต

Nega shunday?

Sababi:

  • parent'da border yo'q
  • parent'da padding yo'q
  • normal flow

๐Ÿ‘‰ Shuning uchun:

child'ning margin-topi

parent'ning margin-topi bilan collapse bo'ladi

๐Ÿงจ 3-holat: Bo'sh elementlar

<div class="a"></div>
<div class="b"></div>
.a {
  margin-bottom: 40px;
}

.b {
  margin-top: 30px;
}

Agar ichida content bo'lmasa ham:

  • baribir collapse bo'ladi
  • faqat kattasi qoladi

โ“ Qachon margin collapse bo'ladi?

Faqat agar:

  • elementlar normal flowda bo'lsa
  • vertical margin bo'lsa
  • orasida border / padding / inline content bo'lmasa

โœ… Qachon collapse bo'lmaydi?

Mana oltin ro'yxat ๐Ÿ‘‡

Margin collapse bo'lmaydi, agar:

  • Element display: flex yoki grid bo'lsa
  • Element position: absolute yoki fixed bo'lsa
  • Ota elementda padding bo'lsa
  • Ota elementda border bo'lsa
  • Ota element Block Formatting Context (BFC) yaratsa
  • Horizontal margin bo'lsa (margin-left/right)

2. Normal flow degani nima?

๐Ÿง  Normal flow nima?

Normal flow โ€” bu brauzerning default joylashtirish qoidasi.

Ya'ni:

Agar sen CSS bilan aralashmasang, brauzer elementlarni o'zi qanday joylashtiradi โ€” mana shu normal flow.

๐Ÿ“ฆ Normal flow'da elementlar qanday joylashadi?

1๏ธโƒฃ Block elementlar

Masalan: div, p, section, article

๐Ÿ‘‰ Qoidalar:

  • Yangi qatordan boshlanadi
  • Ota elementning butun enini egallaydi
  • Vertikal ketma-ket joylashadi
<div>A</div>
<div>B</div>

Natija:

A
B

2๏ธโƒฃ Inline elementlar

Masalan: span, a, strong

๐Ÿ‘‰ Qoidalar:

  • Yonma-yon joylashadi
  • Faqat content joyini egallaydi
  • Yangi qator ochmaydi
<span>A</span>
<span>B</span>

Natija:

A B

โš ๏ธ Muhim farq (ko'p chalkashadi)

Normal flow = position: static holat.

Agar element:

  • position: absolute
  • position: fixed

bo'lsa โ†’ โŒ normal flow'dan chiqadi.

๐Ÿงฑ Normal flow'da margin qanday ishlaydi?

  • Block elementlar orasida โ†’ vertical margin

  • Inline elementlar orasida โ†’ horizontal joy

Margin collapsing:

  • faqat normal flowda bo'ladi
  • shuning uchun oldingi darslar shu yerga bog'langan

โ“ "Normal flow"ni buzadigan narsalar

Agar yozsang:

.parent {
  display: flex;
}

yoki

.parent {
  display: grid;
}

๐Ÿ‘‰ Endi:

  • normal flow o'chadi
  • yangi layout qoidasi ishga tushadi

Flex va Grid โ€” bu normal flow o'rnini bosuvchi layout engine.

๐Ÿ“ Misol: Nega margin-top ishlamayotgandek tuyuladi?

.child {
  margin-top: 40px;
}

Agar:

  • parent'da padding yo'q
  • border yo'q
  • normal flow bo'lsa

๐Ÿ‘‰ Margin parent bilan collapse bo'ladi

๐Ÿง  Qachon normal flow'ni saqlash kerak?

  • Oddiy matn sahifalari
  • Blog postlar
  • Article layout

Qachon buzish kerak?

  • UI layout
  • Card, navbar, sidebar
  • App interfeyslar

๐Ÿ“Œ Xulosa

  • Margin collapsing โ€” faqat vertical marginlarda bo'ladi
  • Eng katta margin yutib ketadi
  • Normal flow โ€” brauzerning default joylashtirish qoidasi
  • Flex va Grid normal flow'ni buzadi
  • Margin collapsing faqat normal flowda ishlaydi