Asosiy kontentga o‘tish
Innovialabs

CSS Flexbox: vyorstka misollari bilan to‘liq qo‘llanma

Amaliyot3 daq

Qisqacha

Flexbox elementlarni bitta o‘q bo‘ylab joylashtiradi: display: flex bo‘lgan konteyner yo‘nalish, tekislash va oraliqlarni boshqaradi, elementlar esa qanday cho‘zilishi va siqilishini belgilaydi.

Flexbox nima va u qachon kerak

Flexbox — CSS’dagi joylashtirish usuli bo‘lib, elementlarni bitta chiziqqa tizadi: qator yoki ustun. U navigatsiya, qatordagi tugmalar, markazlash va bir xil balandlikdagi kartochkalar uchun mos.

U ota elementda bitta xususiyat bilan yoqiladi:

.container {
  display: flex;
}

Ota element flex-konteynerga, uning bevosita bolalari esa flex-elementlarga aylanadi. Flexbox’da ikkita o‘q bor: asosiy o‘q (elementlar shu bo‘ylab joylashadi) va ko‘ndalang o‘q (unga perpendikulyar).

Konteyner xususiyatlari

XususiyatNima qiladiKo‘p ishlatiladigan qiymatlar
flex-directionAsosiy o‘q yo‘nalishirow, column, row-reverse, column-reverse
flex-wrapYangi qatorga o‘tkazishnowrap, wrap
flex-flowdirection + wrap qisqartmasirow wrap
justify-contentAsosiy o‘q bo‘yicha tekislashflex-start, center, space-between, space-around, space-evenly
align-itemsKo‘ndalang o‘q bo‘yicha tekislashstretch, center, flex-start, flex-end, baseline
align-contentO‘tkazilgan qatorlarni taqsimlashflex-start, center, space-between
gapElementlar orasidagi masofa16px, 1rem 2rem

Muhim: flex-direction: column bo‘lganda o‘qlar o‘rin almashadi va justify-content vertikal ishlay boshlaydi.

Element xususiyatlari

XususiyatNima qiladi
flex-growElement bo‘sh joyning qancha ulushini oladi (standart 0)
flex-shrinkJoy yetmaganda qanchalik siqiladi (standart 1)
flex-basisJoy taqsimlanishidan oldingi boshlang‘ich o‘lcham
flexQisqartma: grow, shrink, basis
align-selfKo‘ndalang o‘q bo‘yicha o‘z tekislanishi
orderKo‘rsatish tartibi

Eng foydali qisqartmalar:

  • flex: 1 — element cho‘ziladi va joyni qo‘shnilari bilan teng bo‘ladi;
  • flex: none — o‘smaydi ham, siqilmaydi ham;
  • flex: 0 0 200px — qat’iy 200px kenglik.

Tipik maketlar

<header class="nav">
  <a href="/" class="logo">Logo</a>
  <nav class="menu">
    <a href="/about">Biz haqimizda</a>
    <a href="/contacts">Kontaktlar</a>
  </nav>
</header>
.nav {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 16px 24px;
}
.menu {
  display: flex;
  gap: 24px;
}

Blokni markazlash

.center {
  display: flex;
  justify-content: center;
  align-items: center;
  min-height: 100vh;
}

Blok ikkala o‘q bo‘yicha ham aynan o‘rtada turadi.

Kartochkalar qatori

.cards {
  display: flex;
  flex-wrap: wrap;
  gap: 20px;
}
.card {
  flex: 1 1 260px;
}

Har bir kartochka 260px kenglikka intiladi, qatorni to‘ldirish uchun cho‘ziladi va joy yetmaganda keyingi qatorga o‘tadi. Bir qatordagi kartochkalar standart align-items: stretch tufayli bir xil balandlikka ega bo‘ladi.

body {
  display: flex;
  flex-direction: column;
  min-height: 100vh;
  margin: 0;
}
main {
  flex: 1;
}

main barcha bo‘sh joyni egallaydi va footer qisqa sahifada ham pastda qoladi.

Ko‘p uchraydigan xatolar

  • Xususiyatlar noto‘g‘ri elementda. justify-content konteynerga, flex: 1 esa elementga yoziladi.
  • Uzun matn joylashuvni buzadi. Flex-elementlarda standart min-width: auto bo‘ladi, uzun so‘z yoki jadval elementning siqilishiga yo‘l qo‘ymaydi. min-width: 0 yordam beradi.
  • gap o‘rniga margin. gap chetdagi elementlarga ortiqcha oraliq qo‘shmaydi.
  • Ikki o‘lchamli setka uchun Flexbox. Ham qatorlar, ham ustunlar bo‘yicha tekislash kerak bo‘lsa, CSS Grid qulayroq.
  • Ma’noni o‘zgartirish uchun order. U faqat vizual tartibni o‘zgartiradi, klaviatura va screen reader esa HTML’dagi tartib bo‘yicha yuradi.

Xususiyatlarning to‘liq tavsifi MDNda bor.

Ko‘p beriladigan savollar

Flexbox bitta o‘lchamda ishlaydi: qator yoki ustun. Grid esa birdaniga ikkitasida. Navigatsiya va tugmalar qatori uchun odatda Flexbox, sahifa maketi va galereyalar uchun Grid olinadi. Ular ko‘pincha birga ishlatiladi.

Bunda yordam beramiz

O‘zingiz shug‘ullanmasdan natija olishni istasangiz — biz har kuni shu bilan shug‘ullanamiz.

Loyihani muhokama qilish

Yana o‘qing

G‘oya yoki vazifangiz bormi? Bizga aytib bering

Ish kuni davomida javob beramiz va yechim taklif qilamiz. Konsultatsiya bepul.