फ्लेक्स आइटम को स्ट्रेचिंग से रोकें


100

नमूना:

div {
  display: flex;
  height: 200px;
  background: tan;
}
span {
  background: red;
}
<div>
  <span>This is some text.</span>
</div>

मेरे दो सवाल हैं, कृपया:

  1. यह मूल रूप से क्यों होता है span?
  2. एक फ्लेक्स कंटेनर में अन्य फ्लेक्स आइटम को प्रभावित किए बिना इसे खींचने से रोकने के लिए सही तरीका क्या है?

जवाबों:


174

आप ऊंचाई में अवधि को फैलाना नहीं चाहते हैं?
आपके पास कंटेनर की पूरी ऊंचाई तक खिंचाव न करने के लिए एक या अधिक फ्लेक्स-आइटम को प्रभावित करने की possiblity है।

कंटेनर के सभी फ्लेक्स-आइटम को प्रभावित करने के लिए, इसे चुनें:
आपको सेटalign-items: flex-start;करना होगाdivऔर इस कंटेनर के सभी फ्लेक्स-आइटमों को उनकी सामग्री की ऊंचाई मिलेगी।

div {
  align-items: flex-start;
  background: tan;
  display: flex;
  height: 200px;
}
span {
  background: red;
}
<div>
  <span>This is some text.</span>
</div>

केवल एक ही फ्लेक्स-आइटम को प्रभावित करने के लिए, इसे चुनें:
यदि आप कंटेनर पर एकल फ्लेक्स-आइटम को हटाना चाहते हैं, तो आपको इस फ्लेक्स-आइटम पर सेटalign-self: flex-start;करना होगा। कंटेनर के अन्य सभी फ्लेक्स-आइटम प्रभावित नहीं होते हैं।

div {
  display: flex;
  height: 200px;
  background: tan;
}
span.only {
  background: red;
  align-self:flex-start;
}
span {
    background:green;
}
<div>
  <span class="only">This is some text.</span>
  <span>This is more text.</span>
</div>

ऐसा क्यों हो रहा है span?
संपत्ति का डिफ़ॉल्ट मान align-itemsहै stretch। यही कारण है कि spanकी ऊंचाई भरें div

baselineऔर के बीच अंतर flex-start?
यदि आपके पास फ्लेक्स-आइटम पर कुछ पाठ हैं, तो विभिन्न फ़ॉन्ट-आकारों के साथ, आप फ्लेक्स-आइटम को लंबवत रखने के लिए पहली पंक्ति के आधार रेखा का उपयोग कर सकते हैं। एक छोटे-से फ़ॉन्ट आकार वाले एक फ्लेक्स-आइटम में कंटेनर और शीर्ष पर खुद के बीच कुछ जगह होती है। साथ flex-startफ्लेक्स-मद (अंतरिक्ष) के बिना कंटेनर के शीर्ष करने के लिए सेट कर दिया जाएगा।

div {
  align-items: baseline;
  background: tan;
  display: flex;
  height: 200px;
}
span {
  background: red;
}
span.fontsize {
  font-size:2em;
}
<div>
  <span class="fontsize">This is some text.</span>
  <span>This is more text.</span>
</div>

आप यहां baselineऔर इसके बीच अंतर के बारे में अधिक जानकारी पा सकते हैं flex-start:
फ्लेक्स-स्टार्ट और बेसलाइन में क्या अंतर है?


1
उत्तर के लिए धन्यवाद, लेकिन यह सभी फ्लेक्स आइटम को प्रभावित करता है। और एक सवाल: मूल्यों baselineऔर flex-startमूल्यों के बीच अंतर क्या है ? उनके परिणाम समान प्रतीत होते हैं। क्या वे एक स्थिति में भिन्न हो सकते हैं?
मोरी

बहुत अच्छा लगता है! यदि आप मुझे baselineऔर flex-startमूल्यों के बीच का अंतर भी बताएंगे, तो मैं आभारी रहूंगा ।
मोरी


युक्ति: यदि आप उन्हें क्षैतिज रूप से संरेखित करना चाहते हैं, तो बस उपयोग करें align-items: center;:)
रिकार्डो ज़िया

# हेक: अपने तत्व को एक नए डिव के साथ लपेटें। यह नए पैरेंट डिव को स्ट्रेच करेगा और आपके तत्व को अछूता छोड़ देगा।
user1948585
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.