एक फ्लेक्स कंटेनर के मुख्य अक्ष और क्रॉस एक्सिस पर विचार करें:
स्रोत: W3C
मुख्य संपत्ति के साथ फ्लेक्स आइटम संरेखित करने के लिए एक संपत्ति है:
क्रॉस अक्ष के साथ फ्लेक्स आइटम को संरेखित करने के लिए तीन गुण हैं:
ऊपर की छवि में, मुख्य अक्ष क्षैतिज है और क्रॉस अक्ष ऊर्ध्वाधर है। ये एक फ्लेक्स कंटेनर के डिफ़ॉल्ट निर्देश हैं।
हालांकि, इन दिशाओं को आसानी से flex-direction
संपत्ति के साथ बदला जा सकता है ।
/* main axis is horizontal, cross axis is vertical */
flex-direction: row;
flex-direction: row-reverse;
/* main axis is vertical, cross axis is horizontal */
flex-direction: column;
flex-direction: column-reverse;
(क्रॉस अक्ष हमेशा मुख्य अक्ष के लंबवत होता है।)
कुल्हाड़ी का काम कैसे होता है, यह बताने में मेरी बात यह है कि दिशा के बारे में कुछ भी विशेष नहीं लगता है। मुख्य अक्ष, क्रॉस अक्ष, वे दोनों महत्व के संदर्भ में समान हैं flex-direction
और आगे और पीछे स्विच करना आसान बनाता है।
तो क्रॉस एक्सिस को दो अतिरिक्त संरेखण गुण क्यों मिलते हैं?
क्यों कर रहे हैं align-content
और align-items
मुख्य धुरी के लिए एक संपत्ति में समेकित?
मुख्य अक्ष को एक justify-self
संपत्ति क्यों नहीं मिलती है ?
परिदृश्य जहां ये गुण उपयोगी होंगे:
फ्लेक्स कंटेनर के कोने में एक फ्लेक्स आइटम रखें
#box3 { align-self: flex-end; justify-self: flex-end; }
फ्लेक्स आइटमों के एक समूह को संरेखित-दाएं बनाना (
justify-content: flex-end
) लेकिन पहले आइटम को संरेखित करना छोड़ दिया है (justify-self: flex-start
)एक नेवड आइटम और लोगो के समूह के साथ हेडर अनुभाग पर विचार करें।
justify-self
लोगो के साथ बाईं ओर संरेखित किया जा सकता है, जबकि नव-वस्तुएं सही बनी रहती हैं, और पूरी चीज़ आसानी से ("फ्लेक्स") अलग-अलग स्क्रीन आकारों में समायोजित हो जाती है।तीन फ्लेक्स आइटमों की एक पंक्ति में, मध्य वस्तु को कंटेनर के केंद्र पर चिपकाएँ (
justify-content: center
) और आसन्न वस्तुओं को कंटेनर किनारों (justify-self: flex-start
औरjustify-self: flex-end
) में संरेखित करें ।ध्यान दें कि आस-पास की वस्तुओं की चौड़ाई अलग-अलग होने पर मान
space-around
और संपत्तिspace-between
परjustify-content
कंटेनर के बारे में मध्य वस्तु को केंद्रित नहीं रखेंगे।
इस लेखन के रूप में, फ्लेक्सबॉक्स युक्ति में justify-self
या इसका कोई उल्लेख नहीं है ।justify-items
हालांकि, CSS बॉक्स संरेखण मॉड्यूल में , जो सभी बॉक्स मॉडल में उपयोग के लिए संरेखण गुणों का एक सामान्य सेट स्थापित करने के लिए W3C का अधूरा प्रस्ताव है, यह है:
स्रोत: W3C
आप देखेंगे कि justify-self
और justify-items
माना जा रहा है ... लेकिन फ्लेक्सबॉक्स के लिए नहीं ।
मैं मुख्य प्रश्न को दोहराकर समाप्त करूंगा:
कोई "औचित्य-मद" और "औचित्य-स्व" गुण क्यों नहीं हैं?
justify-content: flex-start
, इसलिए आइटमों की शुरुआत में भीड़ होती है जैसे | abcd | | आप इसे करने के लिए क्या उम्मीद करेंगे, अगर आप justify-self: [anything]
आइटम 'b' पर रखते हैं?)
justify-self
एक फ्लेक्स आइटम के लिए कैसे काम करने की उम्मीद करेंगे ? मैं कहूंगा कि auto
पहले से ही फ्लेक्स आइटम पर काम करने वाले मार्जिन से अलग नहीं । आपके दूसरे उदाहरण में, justify-self: flex-end
आइटम d पर इसे दूर के किनारे पर ले जाया जाएगा। यह अपने आप में एक बड़ी विशेषता होगी, जो auto
मार्जिन पहले से ही कर सकता है। मैंने एक प्रदर्शन के साथ एक उत्तर पोस्ट किया।
justify-content
और justify-self
इसे निर्दिष्ट किया जाए, ताकि संघर्ष के साथ मामले (जैसे कि परिदृश्यों के बारे में मैंने पूछा) स्पष्ट रूप से और समझदारी से परिभाषित किया गया है। जैसा कि मैंने अपने उत्तर में यहां दिया है, एक बड़े बॉक्स के भीतर{justify|align}-self
आइटम संरेखित करने के बारे में हैं , जो {justify|align}-self
मूल्य से स्वतंत्र रूप से आकार में है - और मुख्य धुरी में ऐसा कोई बॉक्स नहीं है, जिसमें फ्लेक्स आइटम को संरेखित किया जाए।
justify-self
और justify-content
बातचीत करेंगे, ऐसे मामलों में जहां वे संघर्ष करते हैं (जैसे कि मैंने जो परिदृश्य बिछाए हैं)। ऑटो मार्जिन बस के साथ बातचीत नहीं करते हैं justify-content
- वे justify-content
उपयोग करने का मौका मिलने से पहले पैकिंग की सभी जगह चुरा लेते हैं । इसलिए, ऑटो मार्जिन वास्तव में एक अच्छा एनालॉग नहीं है कि यह कैसे काम करेगा।
justify-self
एक फ्लेक्स आइटम के लिए कैसे काम करने की उम्मीद करेंगे ? मान लें कि आपके पास उनके चारों ओर वितरित करने के लिए अतिरिक्त जगह के साथ एक, बी, सी, डी हैं, और फ्लेक्स कंटेनर हैjustify-content: space-between
, इसलिए अंत में जैसे | abcd | इसे जोड़ने का क्या मतलब होगा जैसेjustify-self: center
'या' औचित्य-स्व: फ्लेक्स-एंड `सिर्फ आइटम 'बी' के लिए? आप कहाँ जाने की उम्मीद करेंगे? (मुझे यहां एक उत्तर में कुछ डेमो दिखाई देते हैं, लेकिन मुझे यह स्पष्ट रूप से नहीं दिखता है कि यह सामान्य रूप से काम करेगा।)