CSS में फ्लेक्स ब्लॉकों के संपीड़न को नियंत्रित करना
डिफ़ॉल्ट रूप से, सभी तत्वों से उनकी चौड़ाई के अनुपात में
टुकड़े छीने जाते हैं।
हालाँकि, ऐसा करना संभव है कि कुछ तत्वों से
अधिक या कम टुकड़े छीने जाएँ। इसके लिए एक विशेष गुण
flex-shrink मौजूद है।
यह गुण एक प्रकार का वजन है, जिससे तत्व की चौड़ाई को गुणा किया जाएगा
ऊपर दिए गए सूत्र के अनुसार छीने जाने वाले टुकड़े की गणना करते समय। उदाहरण के लिए, यदि
तत्व की चौड़ाई 200px है, और उसका
flex-shrink 3 है, तो भारित
(यानी वजन से गुणा) तत्व की चौड़ाई
इस प्रकार होगी:
200px * 3 = 600px
flex-shrink को ध्यान में रखते हुए सूत्र
निम्नलिखित रूप लेगा: नकारात्मक स्वतंत्र स्थान
* (तत्व की भारित चौड़ाई / सभी तत्वों की
भारित चौड़ाई का योग)।
आइए एक उदाहरण देखें। मान लीजिए कि हमारे पास
4 तत्व हैं। मान लीजिए कि पहले तत्व की चौड़ाई
400px है, और flex-shrink
2 है, बाकी तत्वों की चौड़ाई
- 200px, और उनका flex-shrink है
1। मान लीजिए कि माता-पिता की चौड़ाई 900px है।
तत्वों की कुल चौड़ाई है:
400px + 3 * 200px = 1000px
नकारात्मक स्वतंत्र स्थान इसके बराबर होगा:
1000px - 900px = 100px
तत्वों की कुल भारित चौड़ाई है:
400px * 2 + 200px * 1 + 200px * 1 + 200px * 1 = 1400px
पहले तत्व की भारित चौड़ाई है:
400px * 2 = 800px
पहले तत्व से निम्नलिखित टुकड़ा छीना जाएगा:
100px * (800px / 1400px) = 100px * 0.57 = 57.14px
तत्व की चौड़ाई इसके बराबर होगी:
400px - 57.14px = 342.86px ~ 343px
बाकी प्रत्येक तत्व की भारित चौड़ाई है:
200px * 1 = 200px
प्रत्येक तत्व से निम्नलिखित टुकड़ा छीना जाएगा:
100px * (200px / 1400px) = 100px * 0.142 = 14.2px
तत्व की चौड़ाई इसके बराबर होगी:
200px - 14.2px = 185.8px ~ 186px
वर्णित ब्लॉकों को लागू करें और माप द्वारा जांचें, कि तत्वों की चौड़ाई वास्तव में हमारे द्वारा गणना किए गए के बराबर है।
ब्लॉकों की चौड़ाई की गणना करें, और फिर गणना को माप द्वारा जांचें:
<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;
}
ब्लॉकों की चौड़ाई की गणना करें, और फिर गणना को माप द्वारा जांचें:
<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;
}
ब्लॉकों की चौड़ाई की गणना करें, और फिर गणना को माप द्वारा जांचें:
<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;
}