Sebagian besar gambar dengan dimensi intrinsik , yaitu ukuran yang wajar, seperti jpeggambar. Jika ukuran yang ditentukan menentukan salah satu dari lebar dan tinggi, nilai yang hilang ditentukan dengan menggunakan rasio intrinsik ... - lihat MDN .
Tapi itu tidak berfungsi seperti yang diharapkan jika gambar yang disetel sebagai item flex langsung dengan Modul Tata Letak Kotak Fleksibel Level 1 , sejauh yang saya tahu.
Lihat diskusi ini dan laporan bug mungkin terkait:
- Flexbugs # 14 - Ukuran Intrinsik Chrome / Flexbox tidak diterapkan dengan benar.
- Bug Firefox 972595 - Wadah fleksibel harus menggunakan "basis-fleksibel" daripada "lebar" untuk menghitung lebar intrinsik item fleksibel
- Masalah Chromium 249112 - Di Flexbox, izinkan rasio aspek intrinsik untuk menginformasikan penghitungan ukuran utama.
Sebagai solusinya, Anda bisa membungkus masing <img>- masing dengan a <div>atau a <span>, atau lebih.
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 Ukuran Minimum Tersirat dari Item Fleksibel
Untuk memberikan ukuran minimum default yang lebih masuk akal untuk item fleksibel , spesifikasi ini memperkenalkan nilai otomatis baru sebagai nilai awal properti min-width dan min-height yang ditentukan dalam CSS 2.1.
Atau, Anda dapat menggunakan tabletata letak CSS sebagai gantinya, yang akan Anda dapatkan hasil yang serupa flexbox, ini akan berfungsi di lebih banyak browser, bahkan untuk 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>dengan CSSbackground-image: url(...);background-size:contain; background-repeat:no-repeat