La segunda propiedad aplicada a los items de una caja flexible se llama "flex-shrink" y almacena un valor entero no negativo. Este valor representa un factor de encogimiento o contracción del item.
Cuando no hay más espacio para repartir en el Flexbox los items comienzan a contraerse para entrar en el contenedor.
El valor por defecto almacenando en la propiedad "flex-shrink" es el 1, esto quiere decir que cuando empezamos a reducir el ancho del contenedor los items se encogen en forma proporcional.
Si queremos que uno o más items no se encojan debemos asignarle a la propiedad "flex-shrink" el valor cero.
Probemos de asignar el valor 0 al segundo item:
Problema: Definir un Flexbox con tres items. Hacer que el segundo item no pueda encogerse empleando la propiedad "flex-shrink".
pagina1.html
<!DOCTYPE html> <html> <head> <title>Problema</title> <meta charset="UTF-8"> <link rel="StyleSheet" href="estilos.css" type="text/css"> </head> <body> <div id="contenedor1"> <div id="item1">Caja 1<br>Esto es una prueba de la propiedad flex-shrink</div> <div id="item2">Caja 2<br>Esto es una prueba de la propiedad flex-shrink</div> <div id="item3">Caja 3<br>Esto es una prueba de la propiedad flex-shrink</div> </div> </body> </html>
estilos.css
#contenedor1{ display: flex; background-color: #000; height: 300px; color:white; font-size:2rem; } #item1 { background-color: #0078A6; } #item2 { flex-shrink: 0; background-color: #0084B6; } #item3 { background-color: #008CC1; }
Solo al elemento #item2 le asignamos un valor 0 a la propiedad "flex-shrink", las otras almacenan un valor 1 y por lo tanto se pueden contraer:
flex-shrink: 0;