CSSda Fleks Bloklarning Siqilishini Tartibga Solish
Standart tarzda barcha elementlarning kengligiga mutanosib ravishda
kichik qismlari ajratiladi. Biroq, ba'zi elementlarning katta yoki
kichikroq qismlari ajratilishi mumkin. Buning uchun maxsus
flex-shrink xususiyati mavjud.
Ushbu xususiyat yuqorida keltirilgan formulaga ko'ra, elementning
kengligi ajratiladigan qismni hisoblashda ko'paytiriladigan ma'lum
bir og'irlikdir. Masalan, agar elementning kengligi 200px, uning
flex-shrink qiymati 3 bo'lsa, unda elementning og'irlashtirilgan
(ya'ni og'irlikka ko'paytirilgan) kengligi quyidagicha bo'ladi:
200px * 3 = 600px
flex-shrink ni hisobga olgan holda formula quyidagi ko'rinishga ega bo'ladi: manfiy bo'sh joy
* (elementning og'irlashtirilgan kengligi / barcha
elementlarning og'irlashtirilgan kengliklari yig'indisi).
Keling, bir misolni ko'rib chiqaylik. Faraz qilaylik, bizda
4 ta element bor. Birinchi elementning kengligi 400px, flex-shrink
qiymati 2 bo'lsin, qolgan elementlarning kengligi
- 200px, ularning flex-shrink qiymati esa
1 bo'lsin. Faraz qilaylik, ota-onaning kengligi 900px.
Elementlarning umumiy kengligi:
400px + 3 * 200px = 1000px
Manfiy bo'sh joy quyidagicha bo'ladi:
1000px - 900px = 100px
Elementlarning umumiy og'irlashtirilgan kengligi:
400px * 2 + 200px * 1 + 200px * 1 + 200px * 1 = 1400px
Birinchi elementning og'irlashtirilgan kengligi:
400px * 2 = 800px
Birinchi elementdan quyidagi qism ajratiladi:
100px * (800px / 1400px) = 100px * 0.57 = 57.14px
Elementning kengligi quyidagicha bo'ladi:
400px - 57.14px = 342.86px ~ 343px
Qolgan har bir elementning og'irlashtirilgan kengligi quyidagicha:
200px * 1 = 200px
Har bir elementdan quyidagi qism ajratiladi:
100px * (200px / 1400px) = 100px * 0.142 = 14.2px
Elementning kengligi quyidagicha bo'ladi:
200px - 14.2px = 185.8px ~ 186px
Tasvirlangan bloklarni amalga oshiring va o'lchash orqali tekshiring, elementlarning kengligi haqiqatdan ham biz hisoblaganidek bo'lishini.
Bloklarning kengligini hisoblang, keyin hisoblaringizni o'lchash orqali tekshiring:
<div class="parent">
<div class="child elem1">1</div>
<div class="child elem2">2</div>
<div class="child elem3">3</div>
</div>
.parent {
display: flex;
width: 200px;
height: 200px;
border: 1px solid red;
}
.child {
height: 50px;
border: 1px solid green;
}
.elem1 {
width: 100px;
flex-shrink: 2;
}
.elem2 {
width: 100px;
flex-shrink: 1;
}
.elem3 {
width: 100px;
flex-shrink: 1;
}
Bloklarning kengligini hisoblang, keyin hisoblaringizni o'lchash orqali tekshiring:
<div class="parent">
<div class="child elem1">1</div>
<div class="child elem2">2</div>
<div class="child elem3">3</div>
</div>
.parent {
display: flex;
width: 200px;
height: 200px;
border: 1px solid red;
}
.child {
height: 50px;
border: 1px solid green;
}
.elem1 {
width: 100px;
flex-shrink: 3;
}
.elem2 {
width: 100px;
flex-shrink: 2;
}
.elem3 {
width: 100px;
flex-shrink: 1;
}
Bloklarning kengligini hisoblang, keyin hisoblaringizni o'lchash orqali tekshiring:
<div class="parent">
<div class="child elem1">1</div>
<div class="child elem2">2</div>
<div class="child elem3">3</div>
<div class="child elem4">4</div>
</div>
.parent {
display: flex;
width: 500px;
height: 200px;
border: 1px solid red;
}
.child {
height: 50px;
border: 1px solid green;
}
.elem1 {
width: 300px;
flex-shrink: 3;
}
.elem2 {
width: 200px;
flex-shrink: 2;
}
.elem3 {
width: 200px;
flex-shrink: 1;
}
.elem4 {
width: 200px;
flex-shrink: 1;
}