2016-06-03 13 views
48

फ्लेक्सबॉक्स में यह व्यवहार है जहां यह छवियों को उनकी प्राकृतिक ऊंचाई तक फैलाता है। अन्य (अधिक विशिष्ट) शब्दों में, यदि मेरे पास एक बच्चे छवि के साथ एक फ्लेक्सबॉक्स कंटेनर है, और मैं उस छवि की चौड़ाई का आकार बदलता हूं, तो ऊंचाई बिल्कुल आकार बदलती नहीं है और छवि फैली हुई है।फ्लेक्सबॉक्स मेरी छवि क्यों फैलाता है?

<div> 
    <img src="https://loremflickr.com/400/300" > 
    <h4>Appify</h4> 
    <p> some text </p> 
</div> 

और यह स्टाइलशीट

div { 
    display: flex; 
    flex-wrap: wrap; 
} 
img{ 
    width: 50% 
} 

मैं प्रदर्शित करने के लिए मैं क्या मतलब This codepen गयी। इसका कारण क्या है?

+1

Firefox में के साथ छवि रैप करने के लिए था और IE ठीक काम करता है। क्रोम में आप छवि में 'align-self: flex-start' के साथ ठीक कर सकते हैं। मुझे नहीं पता क्यों, शायद क्रोम में डिफ़ॉल्ट मान खिंचाव है। – blonfu

+0

ऊंचाई भी जोड़ना: 100%; आईएमजी को समस्या को हल करता है, मैं जानना चाहता हूं कि यह छवि को क्यों फैलाता है। – Paran0a

+3

@blonfu, सभी ब्राउज़रों में डिफ़ॉल्ट मान 'संरेखण-आइटम: खिंचाव'/'संरेखण-स्वयं: खिंचाव 'है। यदि आप प्रत्येक आइटम के चारों ओर एक सीमा जोड़ते हैं और 'रैप' हटाते हैं, तो आप सभी ब्राउज़रों में सभी आइटमों को फैलाएंगे: http://codepen.io/anon/pen/oLXBVx?editors=1100 –

उत्तर

87

यह खींच रहा है क्योंकि align-self डिफ़ॉल्ट मान stretch है। align-selfcenter पर सेट करें।

align-self: center 

यहाँ दस्तावेज़ नहीं देख: align-self

+0

हां लेकिन अन्य ब्राउज़र छवियों में पहलू अनुपात को मापते हैं। क्रोम और न ही – blonfu

+0

में फ्लेक्स-आधार लागू होता है, आपको बहुत धन्यवाद, यह समस्या थी! –

2

कुंजी align-self: center है:

.container { 
 
    display: flex; 
 
    flex-direction: column; 
 
} 
 

 
img { 
 
    max-width: 100%; 
 
} 
 

 
img.align-self { 
 
    align-self: center; 
 
}
<div class="container"> 
 
<p>Without align-self:</p> 
 
<img src="http://i.imgur.com/NFBYJ3hs.jpg" /> 
 
<p>With align-self:</p> 
 
<img class="align-self" src="http://i.imgur.com/NFBYJ3hs.jpg" /> 
 
</div>

-1

मैं एक फाउंडेशन मेनू के साथ एक ही मुद्दा सामना करना पड़ा। align-self: center; मेरे लिए काम नहीं किया।

मेरे समाधान एक <div style="display: inline-table;">...</div>

संबंधित मुद्दे