CSS Asoslari - 9-dars
Overflow va Block Formatting Context (BFC) tushunchalarini o'rganing. Overflow qanday ishlashini, BFC nima ekanligini va qachon yaratilishini tushuning.
9-dars
O'zing nomla
Bu darsda overflow va Block Formatting Context (BFC) tushunchalarini o'rganamiz.
1. overflow nimani o'zgartiradi?
π§ overflow nima o'zi?
overflow β bu elementga shuni aytadi:
"Ichidagi narsa sig'may qolsa, tashqariga chiqaraymi, kesaymi yoki scroll beraymi?"
π§ Asosiy qiymatlar
1οΈβ£ overflow: visible (default)
.box {
overflow: visible;
}
π Natija:
- content tashqariga chiqib ketadi
- element chegarasi to'siq bo'lmaydi
π§ Shuning uchun:
"Nega rasm div'dan chiqib ketdi?" β chunki visible.
2οΈβ£ overflow: hidden
.box {
overflow: hidden;
}
π Natija:
- tashqariga chiqqan qism kesiladi
- ko'rinmaydi
- scroll yo'q
π§ Ko'p ishlatiladi, lekin ehtiyot bo'l:
- content yo'qolishi mumkin
3οΈβ£ overflow: scroll
.box {
overflow: scroll;
}
π Natija:
- har doim scroll bor
- content sig'sa ham
β UX jihatdan yomon
4οΈβ£ overflow: auto (eng sog'lom)
.box {
overflow: auto;
}
π Natija:
- kerak bo'lsa β scroll chiqadi
- sig'sa β yo'q
β Amaliy loyihalarda eng to'g'ri tanlov
π overflow-x va overflow-y
.box {
overflow-x: hidden;
overflow-y: auto;
}
π Foyda:
- gorizontalni yop
- vertikalni scroll qil
π§ Ayniqsa mobile'da muhim.
β Eng ko'p uchraydigan xatolar
β overflow: hidden ni "hamma joyga" qo'yish β content yo'qoladi
β Scroll chiqmasin deb hidden qilish β accessibility buziladi
β Gorizontal scroll sababini tekshirmasdan yashirish β asl muammo qoladi
π§ Qachon qaysi biri?
- Chiqib ketsin β visible
- Kesilsin β hidden
- Kerak bo'lsa scroll β auto
- Majburiy scroll β scroll
2. Block Formatting Context (BFC) nima?
π§ BFC nima o'zi?
Block Formatting Context β bu brauzer ichida alohida layout hududi.
Oddiy qilib:
BFC β bu "ichki dunyo" ichidagi elementlar tashqariga aralashmaydi, tashqarisi ham ichkariga aralashmaydi.
π§± BFC nimani hal qiladi?
Agar element BFC bo'lsa:
1οΈβ£ Ichidagi marginlar tashqariga collapse bo'lmaydi 2οΈβ£ Float qilingan elementlar parent'ni cho'ktirmaydi 3οΈβ£ Ichki layout barqaror bo'ladi 4οΈβ£ Tashqi elementlar ichkariga ta'sir qila olmaydi
π§ Shu sabab BFC β layoutni "izolyatsiya" qilish usuli.
β Qachon BFC hosil bo'ladi?
Element BFC yaratadi, agar:
1οΈβ£ overflow visible dan boshqa bo'lsa
.parent {
overflow: hidden;
}
yoki
.parent {
overflow: auto;
}
2οΈβ£ display: flow-root bo'lsa (ENG TO'G'RI USUL)
.parent {
display: flow-root;
}
Bu faqat BFC yaratadi, boshqa yon ta'siri yo'q.
3οΈβ£ display: flex yoki grid bo'lsa
.parent {
display: flex;
}
π Flex/Grid konteyner avtomatik BFC.
4οΈβ£ position: absolute yoki fixed
.box {
position: absolute;
}
π Ular ham BFC, lekin oqimdan chiqadi (shu sabab ehtiyot bo'lish kerak)
5οΈβ£ float qilingan element
.box {
float: left;
}
π Float o'zi ham BFC.
𧨠Real muammo β Real yechim
β Muammo 1: Margin collapse (otaβbola)
.parent {
background: lightgray;
}
.child {
margin-top: 40px;
}
π Bola pastga tushmaydi, ota siljiydi π΅
β Yechim (BFC yaratamiz)
.parent {
display: flow-root;
}
yoki:
.parent {
overflow: hidden;
}
π Endi:
- bola ichkarida siljiydi
- collapse yo'q
β Muammo 2: Float parent'ni cho'ktiradi
.child {
float: left;
}
π Parent height = 0 π¬
β Yechim (BFC)
.parent {
display: flow-root;
}
π Parent endi bolani "ko'radi".
β οΈ overflow: hidden bilan ehtiyot bo'l
Ha, u BFC yaratadi. Lekin:
- content kesilishi mumkin
- dropdown, tooltip yo'qoladi
π§ Professional qoida
Layout uchun β flow-root Kesish uchun β overflow
π Xulosa
- overflow β content sig'masligini boshqaradi
- visible β chiqib ketadi (default)
- hidden β kesiladi
- auto β kerak bo'lsa scroll (eng yaxshi)
- scroll β har doim scroll
- BFC β layoutni izolyatsiya qiladi
- display: flow-root β BFC yaratishning eng to'g'ri usuli
- overflow: hidden ham BFC yaratadi, lekin content kesilishi mumkin