Sebagian besar gambar dengan dimensi intrinsik , yaitu ukuran yang wajar, seperti jpeg
gambar. 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 table
tata 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