उपयोग 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
। विभिन्न यूनिकोड वर्णों आदि से आने वाली विभिन्न ऊंचाइयों के लिए अच्छा है