मेरे पास तीन ब्लॉक तत्व हैं जिन्हें मैं सीएसएस फ्लेक्सबॉक्स के साथ बिछा रहा हूं। (मेरे मामले में, वे एक <div>ider
तत्व के दोनों तरफ दो <select>s
होने के लिए होता है, मैं एक सूची बिल्डर नियंत्रण का निर्माण कर रहा हूँ।)क्या मैं सीएसएस फ्लेक्सबॉक्स के साथ सभी वस्तुओं को लपेटने के लिए मजबूर कर सकता हूं?
क्या मैं चाहता हूँ है: (
- बीच करवाने के लिए विभक्त) तत्व संभवतः न्यूनतम स्थान की जगह ले लेता है।
- किसी भी अंत (यानी: चयन नियंत्रण) पर तत्व रखने के लिए न्यूनतम चौड़ाई है, और संभव स्थान भरने के लिए बढ़ती है।
- करवाने के लिए सभी तत्वों खड़ी लपेट, जब पर्याप्त क्षैतिज उन सब को क्षैतिज स्थिति रिक्त स्थान नहीं:
- वहाँ जब कंटेनर (ब्राउज़र चौड़ाई पूर्व) में पर्याप्त क्षैतिज स्थान एक पंक्ति में सभी तीन तत्वों करवाने के लिए।
flexbox इन बातों के सभी का एक अद्भुत काम, पिछले आवश्यकता के लिए छोड़कर करता है। मैं सभी को तत्वों के लपेटने के लिए मजबूर नहीं कर सकता हूं यदि उनमें से सभी को एक पंक्ति पर पर्याप्त स्थान से कम किया गया हो।
मैं एक काफी सरल flexbox सेटअप का उपयोग कर रहा लेआउट प्राप्त करने के लिए:
.container {
display: flex;
flex-wrap: wrap;
flex-direction: row;
align-items: center;
}
select {
flex-basis: 10em;
flex-grow: 1;
}
.divider {
flex-basis: 3em;
flex-grow: 0;
text-align: center;
}
इस के साथ समस्या यह है कि, कंटेनर चौड़ाई किसी भी राशि एक का चयन प्लस विभक्त के लिए पर्याप्त विस्तृत है कि करने के लिए सेट किया गया है , यह अंत चयन को लपेट देगा, लेकिन विभाजक नहीं। मुझे एक लाइन पर एक प्लस एक डिवाइडर मिलेगा, जो बदसूरत दिखता है।
http://jsfiddle.net/5s0yf74w/1/
यह सीएसएस में सुधार करने, जबकि सामान्य flexbox लेआउट को बनाए रखना द्वारा अपने वांछित परिणाम प्राप्त करना संभव है:
इस बेला मुद्दे को दर्शाता है?