Rregullimi i ngjeshjes së blloqeve fleks në CSS
Si parazgjedhje, nga të gjithë elementët prishen
copa, në përpjesëtim me gjerësinë e elementit.
Sidoqoftë, mund të bëhet që nga disa elementë
të prishen copa më të mëdha ose më të vogla.
Për këtë ekziston një veti e veçantë
flex-shrink.
Kjo veti përfaqëson një peshë të caktuar,
me të cilën do të shumëzohet gjerësia e elementit
gjatë llogaritjes së copës së prerë sipas
formulës së përmendur më sipër. Për shembull, nëse
gjerësia e elementit është 200px, dhe
flex-shrink i tij është 3, atëherë gjerësia e ponderuar
(d.m.th. e shumëzuar me peshën) e elementit
do të jetë:
200px * 3 = 600px
Formula duke marrë parasysh flex-shrink do të
ketë formën e mëposhtme: hapësirë negative e lirë
* (gjerësia e ponderuar e elementit / shuma e të gjitha
gjerësive të ponderuara të elementeve).
Le të shohim me një shembull. Le të themi se kemi
4 elementë. Le të themi se gjerësia e elementit të parë
është 400px, dhe flex-shrink
është 2, gjerësia e elementëve të tjerë
- 200px, dhe flex-shrink i tyre është
1. Le të themi se gjerësia e prindit është 900px.
Gjerësia totale e elementeve është:
400px + 3 * 200px = 1000px
Hapësira negative e lirë do të jetë:
1000px - 900px = 100px
Gjerësia totale e ponderuar e elementeve është:
400px * 2 + 200px * 1 + 200px * 1 + 200px * 1 = 1400px
Gjerësia e ponderuar e elementit të parë është:
400px * 2 = 800px
Nga elementi i parë do të pritet copa e mëposhtme:
100px * (800px / 1400px) = 100px * 0.57 = 57.14px
Gjerësia e elementit do të jetë:
400px - 57.14px = 342.86px ~ 343px
Gjerësia e ponderuar e secilit prej elementëve të tjerë është:
200px * 1 = 200px
Nga secili element do të pritet copa e mëposhtme:
100px * (200px / 1400px) = 100px * 0.142 = 14.2px
Gjerësia e elementit do të jetë:
200px - 14.2px = 185.8px ~ 186px
Implementoni blloqet e përshkruara dhe kontrolloni me matje, që gjerësia e elementeve do të jetë vërtet e barabartë me atë që kemi llogaritur ne.
Llogaritni gjerësinë e blloqeve, dhe pastaj kontrolloni llogaritjet me matje:
<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;
}
Llogaritni gjerësinë e blloqeve, dhe pastaj kontrolloni llogaritjet me matje:
<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;
}
Llogaritni gjerësinë e blloqeve, dhe pastaj kontrolloni llogaritjet me matje:
<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;
}