एडम ( flex: 1 1 0) द्वारा स्वीकृत उत्तर फ्लेक्सबॉक्स कंटेनरों के लिए पूरी तरह से काम करता है जिनकी चौड़ाई या तो निश्चित है, या पूर्वजों द्वारा निर्धारित की गई है। स्थिति जहां आप चाहते हैं कि बच्चे कंटेनर को फिट करें।
हालांकि, आपके पास एक ऐसी स्थिति हो सकती है जहां आप चाहते हैं कि कंटेनर बच्चों के लायक हो, जिसमें बच्चे सबसे बड़े बच्चे के आधार पर समान आकार के हों। आप अपने बच्चों द्वारा फ्लेक्सबॉक्स कंटेनर को या तो फिट कर सकते हैं:
- सेटिंग
position: absoluteऔर सेटिंग widthया right, या नहीं
- इसे रैपर के अंदर रखें
display: inline-block
ऐसे फ्लेक्सबॉक्स कंटेनरों के लिए, स्वीकृत उत्तर काम नहीं करता है, बच्चों को समान रूप से आकार नहीं दिया जाता है। मुझे लगता है कि यह फ्लेक्सबॉक्स की एक सीमा है, क्योंकि यह क्रोम, फ़ायरफ़ॉक्स और सफारी में समान व्यवहार करता है।
समाधान फ्लेक्सबॉक्स के बजाय ग्रिड का उपयोग करना है।
डेमो: https://codepen.io/brettdonald/pen/oRpORG
<p>Normal scenario — flexbox where the children adjust to fit the container — and the children are made equal size by setting {flex: 1 1 0}</p>
<div id="div0">
<div>
Flexbox
</div>
<div>
Width determined by viewport
</div>
<div>
All child elements are equal size with {flex: 1 1 0}
</div>
</div>
<p>Now we want to have the container fit the children, but still have the children all equally sized, based on the largest child. We can see that {flex: 1 1 0} has no effect.</p>
<div class="wrap-inline-block">
<div id="div1">
<div>
Flexbox
</div>
<div>
Inside inline-block
</div>
<div>
We want all children to be the size of this text
</div>
</div>
</div>
<div id="div2">
<div>
Flexbox
</div>
<div>
Absolutely positioned
</div>
<div>
We want all children to be the size of this text
</div>
</div>
<br><br><br><br><br><br>
<p>So let's try a grid instead. Aha! That's what we want!</p>
<div class="wrap-inline-block">
<div id="div3">
<div>
Grid
</div>
<div>
Inside inline-block
</div>
<div>
We want all children to be the size of this text
</div>
</div>
</div>
<div id="div4">
<div>
Grid
</div>
<div>
Absolutely positioned
</div>
<div>
We want all children to be the size of this text
</div>
</div>
body {
margin: 1em;
}
.wrap-inline-block {
display: inline-block;
}
#div0, #div1, #div2, #div3, #div4 {
border: 1px solid #888;
padding: 0.5em;
text-align: center;
white-space: nowrap;
}
#div2, #div4 {
position: absolute;
left: 1em;
}
#div0>*, #div1>*, #div2>*, #div3>*, #div4>* {
margin: 0.5em;
color: white;
background-color: navy;
padding: 0.5em;
}
#div0, #div1, #div2 {
display: flex;
}
#div0>*, #div1>*, #div2>* {
flex: 1 1 0;
}
#div0 {
margin-bottom: 1em;
}
#div2 {
top: 15.5em;
}
#div3, #div4 {
display: grid;
grid-template-columns: repeat(3,1fr);
}
#div4 {
top: 28.5em;
}
flexसंपत्तिflex-grow,flex-shrinkऔरflex-basisगुणों के लिए एक आशुलिपि संपत्ति है । यह व्यक्तिगत गुणों पर शॉर्टहैंड का उपयोग करने की सिफारिश की जाती है क्योंकि शॉर्टहैंड किसी भी अनिर्दिष्ट घटक को आम उपयोगों को समायोजित करने के लिए सही ढंग से रीसेट करता है। प्रारंभिक मूल्य है0 1 auto।