आंतरिक आयामों के साथ अधिकांश छवियां , जो एक प्राकृतिक आकार है, एक jpegछवि की तरह । यदि निर्दिष्ट आकार चौड़ाई और ऊंचाई दोनों में से एक को परिभाषित करता है, तो लापता मूल्य को आंतरिक अनुपात का उपयोग करके निर्धारित किया जाता है ... - MDN देखें ।
लेकिन यह उम्मीद के मुताबिक काम नहीं करता है , जब तक कि वर्तमान लचीले बॉक्स लेआउट मॉड्यूल स्तर 1 के साथ प्रत्यक्ष फ्लेक्स आइटम के रूप में सेट की जा रही छवियां , जहां तक मुझे पता है।
इन चर्चाओं और बग रिपोर्ट से संबंधित देखें:
- फ्लेक्सबग्स # 14 - क्रोम / फ्लेक्सबॉक्स आंतरिक आकार सही ढंग से लागू नहीं किया गया।
- फ़ायरफ़ॉक्स बग 972595 - फ्लेक्स कंटेनरों को फ्लेक्स आइटम के आंतरिक चौड़ाई की गणना के लिए "चौड़ाई" के बजाय "फ्लेक्स-बेस" का उपयोग करना चाहिए
- क्रोमियम इश्यू 249112 - फ्लेक्सबॉक्स में, मुख्य आकार की गणना को सूचित करने के लिए आंतरिक पहलू अनुपात की अनुमति दें।
वर्कअराउंड के रूप में, आप प्रत्येक <img>को एक <div>या एक के साथ लपेट सकते हैं <span>, या तो।
jsFiddle
.slider {
display: flex;
}
.slider>div {
min-width: 0; /* why? see below. */
}
.slider>div>img {
max-width: 100%;
height: auto;
}
<div class="slider">
<div><img src="https://picsum.photos/400/300?image=0" /></div>
<div><img src="https://picsum.photos/400/300?image=1" /></div>
<div><img src="https://picsum.photos/400/300?image=2" /></div>
<div><img src="https://picsum.photos/400/300?image=3" /></div>
</div>
4.5 फ्लेक्स आइटमों का न्यूनतम आकार
फ्लेक्स आइटम के लिए अधिक उचित डिफ़ॉल्ट न्यूनतम आकार प्रदान करने के लिए , यह विनिर्देश सीएसएस 2.1 में परिभाषित न्यूनतम चौड़ाई और न्यूनतम ऊंचाई गुणों के प्रारंभिक मूल्य के रूप में एक नया ऑटो मूल्य पेश करता है ।
वैकल्पिक रूप से, आप tableइसके बजाय CSS लेआउट का उपयोग कर सकते हैं , जिसके परिणामस्वरूप आपको समान परिणाम मिलेंगे flexbox, यह IE8 के लिए और भी ब्राउज़रों पर काम करेगा।
jsFiddle
.slider {
display: table;
width: 100%;
table-layout: fixed;
border-collapse: collapse;
}
.slider>div {
display: table-cell;
vertical-align: top;
}
.slider>div>img {
max-width: 100%;
height: auto;
}
<div class="slider">
<div><img src="https://picsum.photos/400/300?image=0" /></div>
<div><img src="https://picsum.photos/400/300?image=1" /></div>
<div><img src="https://picsum.photos/400/300?image=2" /></div>
<div><img src="https://picsum.photos/400/300?image=3" /></div>
</div>
<div>background-image: url(...);background-size:contain; background-repeat:no-repeat