फ्लेक्सबॉक्स

आप तीन बटन एक पंक्ति में बैठे हुए चाहते हैं, समान रूप से दूरी पर, सभी समान ऊंचाई पर, और लंबवत केंद्रित, चाहे हर एक में कितना भी पाठ हो। पुराने दिनों में इसका मतलब फ्लोट्स, क्लीयरफिक्स, और बहुत सारे अनुमान थे। फ्लेक्सबॉक्स ठीक इसके लिए बनाया गया उपकरण है: आप एक कंटेनर को अपने बच्चों को एक लाइन में लेआउट करने के लिए कहते हैं, और फिर आप उन्हें दो अक्षों के साथ तब तक धकेलते हैं जब तक वे वहां न बैठ जाएं जहां आप चाहते हैं। वेब पर देखा जाने वाला अधिकांश दैनिक लेआउट, नेविगेशन बार, टूलबार, कार्ड की पंक्तियां, अंदर एक फ्लेक्स कंटेनर है।
फ्लेक्स कंटेनर
फ्लेक्सबॉक्स एक पैरेंट एलिमेंट पर एक लाइन से शुरू होता है। एक कंटेनर पर display: flex सेट करें और इसके सीधे बच्चे एक पंक्ति में एक दूसरे के बगल में खड़े हो जाते हैं। वह कंटेनर अब एक फ्लेक्स कंटेनर है, और इसके अंदर प्रत्येक बच्चा एक फ्लेक्स आइटम बन जाता है।
.nav {
display: flex; /* बच्चे अब एक पंक्ति में बैठते हैं */
}आइटमें दो दिशाओं के साथ लेआउट करते हैं। मुख्य अक्ष बाएं से दाएं चलता है, जैसे आइटमें पंक्तिबद्ध होते हैं। क्रॉस अक्ष ऊपर से नीचे चलता है, पंक्ति के पार। आप दोनों अक्षों के साथ आइटमों को नियंत्रित करेंगे, इसलिए उन्हें अभी चित्रित करना मददगार है: मुख्य अक्ष वह लाइन है जिस पर आइटमें बैठते हैं, क्रॉस अक्ष इसके पार की दिशा है।
.nav {
display: flex;
}एक एकल घोषणा, और किसी भी ब्लॉक के बच्चे ऊपर से नीचे तक स्टैक करना बंद कर देते हैं और एक पंक्ति में बैठना शुरू कर देते हैं। इस अध्याय की बाकी सब कुछ उन आइटमों को नियंत्रित करने के बारे में है जब वे कंटेनर में होते हैं।
display: flex रखें और इसके सीधे बच्चे एक पंक्ति में खड़े हो जाते हैं। वह पैरेंट फ्लेक्स कंटेनर है, बच्चे फ्लेक्स आइटमें हैं। आइटमें दो दिशाओं में चलते हैं: मुख्य अक्ष वह लाइन है जिस पर वे बैठते हैं, क्रॉस अक्ष इसके पार चलता है, और आप दोनों के साथ आइटमों को धकेलेंगे। अक्षों के साथ संरेखित करना
एक बार जब आपके आइटमें एक पंक्ति में होते हैं, तो दो प्रॉपर्टीज़ उन्हें चारों ओर ले जाती हैं। justify-content मुख्य अक्ष के साथ आइटमों को दूरी देता है, जिस दिशा में वे बैठते हैं। align-items उन्हें क्रॉस अक्ष के साथ, पंक्ति के अंदर ऊपर और नीचे ले जाता है।
.nav {
display: flex;
justify-content: space-between; /* पंक्ति के साथ आइटमों को अलग-अलग धकेलें */
align-items: center; /* उन्हें लंबवत मध्य में पंक्तिबद्ध करें */
}justify-content के लिए सामान्य मान flex-start (बाईं ओर बंडल), center (बीच में बंडल), flex-end (दाईं ओर बंडल), space-between (आइटमों के बीच अंतराल, अंत में कोई नहीं), और space-around (हर आइटम के दोनों ओर अंतराल) हैं। align-items के लिए, center वह है जिसे आप सबसे ज्यादा उपयोग करते हैं।
किसी चीज़ को दोनों तरीकों से केंद्र में रखने के लिए, जो कदम हर कोई पहले सीखता है: दोनों को center पर सेट करें।
.hero {
display: flex;
justify-content: center; /* मुख्य अक्ष के साथ केंद्रित */
align-items: center; /* क्रॉस अक्ष के साथ केंद्रित */
}justify-content मुख्य अक्ष के साथ आइटमों को दूरी देता है, align-items उन्हें क्रॉस अक्ष के साथ ले जाता है। पहले को याद रखने के लिए मान हैं center, space-between, और flex-start। दोनों को center पर सेट करें और जो कुछ भी अंदर है वह बिल्कुल बीच में बैठता है, जो लेआउट कदम है जो आप बार-बार उपयोग करेंगे। दिशा और लपेटना
डिफ़ॉल्ट रूप से एक फ्लेक्स कंटेनर आइटमों को एक पंक्ति में लेआउट करता है। flex-direction के साथ वह बदलें। इसे column पर सेट करें और आइटमें एक दूसरे के बगल में बैठने के बजाय ऊपर से नीचे तक स्टैक करते हैं।
.sidebar {
display: flex;
flex-direction: column; /* आइटमें अब लंबवत स्टैक करते हैं */
}जब एक पंक्ति में आइटमें कमरे से बाहर चले जाते हैं, तो वे पतला और पतला हो जाते हैं। उन्हें इसके बजाय एक नई लाइन पर ड्रॉप करने देने के लिए, flex-wrap: wrap जोड़ें।
.card-row {
display: flex;
flex-wrap: wrap; /* आइटमें जो फिट नहीं होते हैं अगली लाइन पर जाते हैं */
}आइटमों के बीच की जगह के लिए, gap का उपयोग करें। यह बाहरी किनारों पर कोई स्पेस जोड़े बिना हर आइटम के बीच एक सुसंगत अंतराल जोड़ता है।
.card-row {
display: flex;
gap: 16px; /* हर आइटम के बीच 16px */
}flex-direction: column आइटमों को एक पंक्ति के बजाय लंबवत स्टैक करता है। flex-wrap: wrap आइटमों को एक नई लाइन पर ड्रॉप करने देता है जब वे कमरे से बाहर चले जाते हैं, सिकुड़ने के बजाय। और gap आइटमों के बीच समान स्पेस रखता है बिना किनारों पर कोई जोड़े, तो मार्जिन से पहले इसके लिए पहुंचें। लचीली आइटम आकार देना
फ्लेक्सबॉक्स का बिंदु यह है कि आइटमें लचीले हो सकते हैं, बढ़ सकते हैं या सिकुड़ सकते हैं स्पेस साझा करने के लिए। शॉर्टहैंड जो आप सबसे ज्यादा उपयोग करेंगे वह है एक आइटम पर flex: 1, जो इसे बताता है कि बढ़ें और उपलब्ध कमरे के जो भी हिस्से का एक समान हिस्सा ले लें।
.card {
flex: 1; /* हर कार्ड पंक्ति के बराबर हिस्से को भरने के लिए बढ़ता है */
}एक पंक्ति में तीन कार्ड पर flex: 1 रखें और वे कंटेनर को तीन समान चौड़ाई में विभाजित करते हैं। एक कार्ड को flex: 2 दें और यह दूसरों के रूप में दो बार अधिक स्पेस लेता है। वह एकल संख्या यह है कि आइटमें बीच बचा हुआ कमरा कैसे विभाजित करते हैं।
flex: 1 के पीछे तीन अलग नियंत्रण हैं: कितना आइटम बढ़ता है, कितना सिकुड़ता है, और इसका शुरुआती आकार। आप शायद शुरुआत में एक-एक करके उन्हें सेट नहीं करते हैं, शॉर्टहैंड सामान्य मामलों को कवर करता है, लेकिन यह जानने में मदद करता है कि वे वहां हैं।
.layout {
display: flex;
gap: 24px;
}
.sidebar {
flex: 0 0 240px; /* निश्चित 240px, कभी बढ़मत या सिकुड़मत नहीं */
}
.main {
flex: 1; /* सभी शेष स्पेस लेता है */
}एक निश्चित साइडबार एक लचीले मुख्य स्तंभ के बगल में, इरादे की तीन पंक्तियां। यह एक पैटर्न, साथ ही पहले से संरेखित नेविगेशन बार, आपके द्वारा बनाए जाने वाले लेआउट के एक बड़े स्लाइस को कवर करता है।
flex: 1 बताता है कि बढ़ें और पंक्ति का एक समान हिस्सा लें, तो flex: 1 के साथ तीन कार्ड समान चौड़ाई आते हैं। एक को flex: 2 पर बढ़ाएं और यह दो बार स्पेस लेता है। वह एकल संख्या यह है कि फ्लेक्स आइटमें कमरा कैसे विभाजित करते हैं। 
