Sobes.tech
Junior

¿Cómo funcionan las propiedades flex-grow y flex-shrink?

sobes.tech AI

Respuesta de la IA

flex-grow y flex-shrink determinan cómo los elementos ajustan su tamaño de manera adaptable dentro del contenedor flex, cuando hay espacio libre o insuficiente, respectivamente.

flex-grow - determina el coeficiente por el cual un elemento debe aumentar cuando hay espacio libre en el contenedor. El valor predeterminado es 0 (el elemento no se estira). Si varios elementos tienen flex-grow mayor que 0, el espacio libre se distribuye entre ellos en proporción a sus valores de flex-grow.

.item {
  flex-grow: 1; /* El elemento usará todo el espacio libre disponible */
}

flex-shrink - determina el coeficiente por el cual un elemento debe comprimirse cuando hay espacio insuficiente en el contenedor. El valor predeterminado es 1 (el elemento se comprime en proporción a otros elementos que también se comprimen). Un valor de 0 evita que el elemento se comprima.

.item {
  flex-shrink: 0; /* El elemento no se comprimirá */
}

Junto con flex-basis, forman la propiedad abreviada flex: flex: <flex-grow> <flex-shrink> <flex-basis>.

Ejemplo de uso:

<div class="container">
  <div class="item item-1">Item 1</div>
  <div class="item item-2">Item 2</div>
</div>
.container {
  display: flex;
  width: 400px; /* Ejemplo de ancho fijo del contenedor */
}

.item {
  flex-basis: 100px; /* Tamaño base de todos los elementos */
}

.item-1 {
  flex-grow: 1; /* Item 1 usará el espacio libre */
}

.item-2 {
  flex-shrink: 0; /* Item 2 no se comprimirá */
}

Si el contenedor es más ancho que 200px (100px + 100px), item-1 ocupará todo el espacio libre restante. Si el contenedor ya mide 200px, item-2 mantendrá su tamaño base de 100px, y item-1 se comprimirá.