Series: CSS Basics Lesson 21

CSS Asoslari - 21-dars

Grid'da grid-template-areas bilan layout yaratish va minmax() funksiyasidan foydalanish. Responsive dizayn uchun grid-template-areas va minmax() qanday ishlaydi.

21-dars

O'zing nomla

1. grid-template-areas bilan layout

grid-template-areas nima?

Bu — Grid'ning o'qishga oson imkoniyati.

Sen:

grid-column: 1 / 3;

yozmaysan

balki layout'ni nomlaysan

Ya'ni:

"Bu joy header, bu sidebar" deb aytasan.

Eng oddiy misol

.container {
  display: grid;
  grid-template-columns: 200px 1fr;
  grid-template-rows: auto 1fr auto;

  grid-template-areas:
    "header  header"
    "sidebar content"
    "footer  footer";
}

Bu kodni o'qib:

layout ko'z oldingda chiqadi

dizaynni tushunish uchun brauzer shart emas

Elementlar qanday ulanadi?

header  { grid-area: header; }
aside   { grid-area: sidebar; }
main    { grid-area: content; }
footer  { grid-area: footer; }

📌 Shart:

nomlar bir xil bo'lishi kerak

har bir element faqat bitta area

❌ XATO:

grid-template-areas:
  "header header"
  "header content";

Grid buni qabul qilmaydi.

. (nuqta) nimani anglatadi?

grid-template-areas:
  "header header"
  ".      content"
  "footer footer";

👉 . — bo'sh joy

Bu:

layout'ni sindirmaydi

lekin element joylashmaydi

Responsive bilan ishlatiladimi?

HA, juda chiroyli ishlaydi 👇

@media (max-width: 768px) {
  .container {
    grid-template-areas:
      "header"
      "content"
      "sidebar"
      "footer";
    grid-template-columns: 1fr;
  }
}

👉 Bu keyingi darslarga ko'prik.

2. minmax() nima beradi?

Muammo (real hayotdan)

grid-template-columns: 1fr 1fr 1fr;

Hammasi yaxshi… lekin:

ekran kichrayadi

ustunlar juda tor bo'ladi

kontent siqilib, buziladi

👉 Demak:

"fr yetarli emas"

minmax() nima?

minmax() — chegara qo'yish.

Sintaksis:

minmax(min, max)

Ya'ni:

✔️ minimal chegaradan pastga tushmaydi ✔️ maksimal chegaradan oshmaydi

Eng muhim kombinatsiya

grid-template-columns: repeat(3, minmax(200px, 1fr));

Bu nimani anglatadi?

Har bir ustun:

kamida 200px

ko'p bo'lsa 1fr

📌 Grid endi:

siqilsa → to'xtaydi

joy bo'lsa → kengayadi

minmax() va fr birga qanday ishlaydi?

Muhim qoida 🧠:

fr faqat max tomonida bo'lishi mantiqli

❌ Xato:

minmax(1fr, 300px);

✅ To'g'ri:

minmax(200px, 1fr);

minmax(auto, 1fr) nimani beradi?

grid-template-columns: minmax(auto, 1fr);

Bu degani:

kontentga moslash

lekin kerak bo'lsa kengay

3. auto-fit va auto-fill farqi

Muammo (real)

grid-template-columns: repeat(3, minmax(200px, 1fr));

Savol:

ekran katta bo'lsa-chi?

kichik bo'lsa-chi?

👉 3 — bu sun'iy cheklov.

auto-fit va auto-fill nima?

Ular repeat() ichida ishlaydi:

repeat(auto-fit, minmax(200px, 1fr))
repeat(auto-fill, minmax(200px, 1fr))

Ma'nosi:

"Qancha sig'sa, shuncha ustun qil"

Avval umumiy qoidani tushun

Ikkalasi ham:

✔️ ustun sonini avtomatik hisoblaydi

✔️ minmax() bilan ishlaganda kuchli

Farq:

bo'sh ustunlar bilan nima qilishida

auto-fill qanday ishlaydi?

grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));

Agar:

container 1200px

200px sig'sa → 6 ta ustun

Lekin:

itemlar 4 ta bo'lsa ham

6 ta ustun saqlanadi

📌 Bo'sh ustunlar joyni egallab turadi.

auto-fit qanday ishlaydi?

grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));

Xuddi shu holatda:

bo'sh ustunlar yo'qoladi

qolgan ustunlar kengayadi

📌 Layout vizual jihatdan chiroyliroq.

Vizual farq (tasavvur qil)

auto-fill:

[██][██][██][██][  ][  ]

auto-fit:

[████][████][████][████]