उपयोग align-self: centerकरने के बजाय align-items: center।
बदलने flex-directionया उपयोग करने की कोई आवश्यकता नहीं है text-align।
यहाँ आपका कोड है, एक समायोजन के साथ, यह सब काम करने के लिए:
ul {
height: 100%;
}
li {
display: flex;
justify-content: center;
/* align-self: center; <---- REMOVE */
align-items: center; /* <---- NEW */
background: silver;
width: 100%;
height: 20%;
}
align-selfसंपत्ति पर लागू होता है फ्लेक्स आइटम । सिवाय आपके liकोई फ्लेक्स आइटम नहीं है क्योंकि इसके अभिभावक के पास - ulहै display: flexया नहीं है display: inline-flex।
इसलिए, ulएक फ्लेक्स कंटेनर liनहीं है, एक फ्लेक्स आइटम नहीं है, और align-selfइसका कोई प्रभाव नहीं है।
align-itemsसंपत्ति के समान है align-self, सिवाय इसके कि यह लागू होता है फ्लेक्स कंटेनर ।
चूंकि liएक फ्लेक्स कंटेनर है, align-itemsइसका उपयोग बाल तत्वों को लंबवत रूप से करने के लिए किया जा सकता है।
* {
padding: 0;
margin: 0;
}
html, body {
height: 100%;
}
ul {
height: 100%;
}
li {
display: flex;
justify-content: center;
/* align-self: center; */
align-items: center;
background: silver;
width: 100%;
height: 20%;
}
<ul>
<li>This is the text</li>
</ul>
कोडपेन डेमो
तकनीकी रूप से, यहां बताया गया है कि कैसे align-itemsऔर क्या align-selfकाम ...
align-itemsसंपत्ति (कंटेनर पर) का डिफ़ॉल्ट मान सेट align-self(वस्तुओं पर)। इसलिए, align-items: centerइसका मतलब है कि सभी फ्लेक्स आइटम सेट किए जाएंगे align-self: center।
लेकिन आप align-selfअलग-अलग मदों पर समायोजन करके इस डिफ़ॉल्ट को ओवरराइड कर सकते हैं ।
उदाहरण के लिए, आप समान ऊँचाई वाले स्तंभ चाहते हो सकते हैं, इसलिए कंटेनर सेट है align-items: stretch। हालांकि, एक आइटम को शीर्ष पर पिन किया जाना चाहिए, इसलिए इसे सेट किया गया है align-self: flex-start।
उदाहरण
टेक्स्ट एक फ्लेक्स आइटम कैसे है?
कुछ लोग सोच रहे होंगे कि पाठ का एक भाग कैसे ...
<li>This is the text</li>
का एक बच्चा तत्व है li।
कारण यह है कि इनलाइन स्तर के तत्व द्वारा स्पष्ट रूप से लिपटे हुए पाठ को इनलाइन बॉक्स द्वारा एल्गोरिथ्मिक रूप से लपेटा नहीं जाता है। यह इसे एक अनाम इनलाइन तत्व और माता-पिता का बच्चा बनाता है ।
सीएसएस कल्पना से:
9.2.2.1 बेनामी इनलाइन बॉक्स
कोई भी पाठ जो सीधे ब्लॉक कंटेनर तत्व के अंदर समाहित है, उसे एक अनाम इनलाइन तत्व माना जाना चाहिए।
Flexbox विनिर्देश समान व्यवहार के लिए प्रदान करता है।
4. फ्लेक्स आइटम
एक फ्लेक्स कंटेनर का प्रत्येक इन-फ्लो बच्चा एक फ्लेक्स आइटम बन जाता है, और टेक्स्ट का प्रत्येक सन्निहित भाग जो सीधे एक फ्लेक्स कंटेनर के अंदर होता है, एक गुमनाम फ्लेक्स आइटम में लपेटा जाता है।
इसलिए, पाठ liएक फ्लेक्स आइटम है।
align-items: baseline। विभिन्न यूनिकोड वर्णों आदि से आने वाली विभिन्न ऊंचाइयों के लिए अच्छा है