La mayoría de imágenes con dimensiones intrínsecas , es decir, un tamaño natural, como una jpeg
imagen. Si el tamaño especificado define tanto el ancho como el alto, el valor faltante se determina utilizando la relación intrínseca ... - ver MDN .
Pero eso no funciona como se esperaba si las imágenes que se configuran como elementos de flexión directa con el módulo de diseño de caja flexible actual Nivel 1 , hasta donde yo sé.
Vea estas discusiones y los informes de errores pueden estar relacionados:
- Flexbugs # 14 - El tamaño intrínseco de Chrome / Flexbox no se implementó correctamente.
- Error de Firefox 972595 : los contenedores flexibles deben usar "base flexible" en lugar de "ancho" para calcular los anchos intrínsecos de los elementos flexibles
- Chromium Issue 249112 : en Flexbox, permita relaciones de aspecto intrínsecas para informar el cálculo del tamaño principal.
Como solución alternativa, puede envolver cada uno <img>
con a <div>
o a <span>
, o así.
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 Tamaño mínimo implícito de los elementos flexibles
Para proporcionar un tamaño mínimo predeterminado más razonable para los elementos flexibles , esta especificación introduce un nuevo valor automático como el valor inicial de las propiedades min-width y min-height definidas en CSS 2.1.
Alternativamente, puede usar el table
diseño CSS en su lugar, que obtendrá resultados similares ya flexbox
que funcionará en más navegadores, incluso para 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>
con CSSbackground-image: url(...);background-size:contain; background-repeat:no-repeat