Більшість зображень із внутрішніми розмірами , тобто природного розміру, як jpeg
зображення. Якщо вказаний розмір визначає одну з ширини та висоти, відсутнє значення визначається за допомогою внутрішнього співвідношення ... - див. MDN .
Але це не працює, як очікувалося, якщо зображення, які встановлюються як прямі гнучкі елементи з поточним модулем гнучкої компоновки, рівень 1 , наскільки я знаю.
Дивіться ці дискусії та звіти про помилки, можливо, пов’язані:
- Flexbugs №14 - Внутрішній розмір Chrome / Flexbox не виконано правильно.
- Firefox Bug 972595 - Flex контейнери повинні використовувати "flex-основу" замість "width" для обчислення внутрішньої ширини flex елементів
- Chromium Issue 249112 - У Flexbox дозволяйте внутрішнім співвідношенням сторін повідомляти обчислення основного розміру.
Як вирішення, ви можете обгорнути кожен <img>
із символів a <div>
чи a <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 Мінімальний розмір гнучких елементів
Щоб забезпечити більш розумний мінімальний розмір за замовчуванням для гнучких елементів , ця специфікація вводить нове значення авто як початкове значення властивостей мінімальної ширини та мінімальної висоти, визначених у CSS 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>
CSSbackground-image: url(...);background-size:contain; background-repeat:no-repeat