Flexbox चुनौती और सीमा
चुनौती फ्लेक्स आइटम के एक समूह को केंद्र में रखने और लपेटने पर उन्हें संरेखित करने की है। लेकिन जब तक प्रति पंक्ति बक्से की निश्चित संख्या नहीं होती है, और प्रत्येक बॉक्स निश्चित-चौड़ाई वाला होता है, यह वर्तमान में फ्लेक्सबॉक्स के साथ संभव नहीं है।
प्रश्न में पोस्ट किए गए कोड का उपयोग करके, हम एक नया फ्लेक्स कंटेनर बना सकते हैं जो वर्तमान फ्लेक्स कंटेनर ( ul) को लपेटता है , जो हमें इसके ulसाथ केन्द्रित करने की अनुमति देगा justify-content: center।
तब के फ्लेक्स आइटम को ulबाएं-संरेखित किया जा सकता था justify-content: flex-start।
#container {
display: flex;
justify-content: center;
}
ul {
display: flex;
justify-content: flex-start;
}
यह वाम-संरेखित फ्लेक्स आइटम का एक केंद्रित समूह बनाता है।
इस पद्धति के साथ समस्या यह है कि कुछ स्क्रीन आकारों में दाईं ओर एक अंतराल होगा ul, जिससे यह अब केंद्रित नहीं दिखाई देगा।

यह फ्लेक्स लेआउट के कारण होता है (और, वास्तव में, सामान्य रूप से CSS) कंटेनर:
- पता नहीं है कि एक तत्व कब लपेटता है;
- पता नहीं है कि पहले से कब्जा कर लिया गया स्थान अब खाली है, और
- संकीर्ण लेआउट को छोटा करने के लिए अपनी चौड़ाई को पुनर्गणना नहीं करता है।
दाईं ओर व्हाट्सएप की अधिकतम लंबाई फ्लेक्स आइटम की लंबाई है जो कंटेनर के वहां होने की उम्मीद कर रहा था।
निम्नलिखित डेमो में, खिड़की को क्षैतिज रूप से फिर से आकार देकर, आप व्हाट्सएप को आते और जाते देख सकते हैं।
डेमो
एक अधिक व्यावहारिक दृष्टिकोण
वांछित लेआउट को फ्लेक्सबॉक्स का उपयोग किए बिना inline-blockऔर मीडिया प्रश्नों के बिना प्राप्त किया जा सकता है ।
एचटीएमएल
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
</ul>
सीएसएस
ul {
margin: 0 auto;
width: 1200px;
padding-left: 0;
font-size: 0;
}
li {
display: inline-block;
font-size: 18px;
list-style-type: none;
width: 150px;
height: 50px;
line-height: 50px;
margin: 15px 25px;
box-sizing: border-box;
text-align: center;
}
@media screen and (max-width: 430px) { ul { width: 200px; } }
@media screen and (min-width: 431px) and (max-width: 630px) { ul { width: 400px; } }
@media screen and (min-width: 631px) and (max-width: 830px) { ul { width:600px; } }
@media screen and (min-width: 831px) and (max-width: 1030px) { ul { width: 800px; } }
@media screen and (min-width: 1031px) and (max-width: 1230px) { ul { width: 1000px; } }
उपरोक्त कोड इस तरह से बाएं-संरेखित बाल तत्वों के साथ एक क्षैतिज-केंद्रित कंटेनर प्रदान करता है:

डेमो
अन्य विकल्प