Junior
¿Cómo funcionan las propiedades flex-grow y flex-shrink?
sobes.tech AI
Respuesta de la IA
flex-grow y flex-shrink controlan cómo los elementos flex distribuyen el espacio libre dentro del contenedor flex.
flex-grow:
- Determina qué parte del espacio libre disponible en el contenedor flex ocupará el elemento, si hay espacio libre.
- Por defecto
flex-grow: 0, lo que significa que el elemento no crece. - Valor - número no negativo.
- Si varios elementos tienen
flex-growmayor que 0, el espacio libre se distribuye entre ellos en proporción a sus valores deflex-grow.
flex-shrink:
- Determina cuánto se comprimirá el elemento si el espacio disponible en el contenedor flex es menor que la suma de los tamaños base de todos los elementos flex.
- Por defecto
flex-shrink: 1, lo que significa que el elemento puede comprimirse. - Valor - número no negativo.
- Cuanto mayor sea el valor de
flex-shrink, más se comprimirá el elemento en comparación con otros elementos con menor valor. - Al comprimir, se tiene en cuenta el ancho base del elemento (
flex-basisowidth).
Ejemplo:
.contenedor {
display: flex;
width: 500px;
/* Ancho total del contenedor */
}
.elemento {
flex-basis: 100px;
/* Ancho base de cada elemento */
}
.elemento:nth-child(1) {
flex-grow: 1;
flex-shrink: 1; /* Valores por defecto */
}
.elemento:nth-child(2) {
flex-grow: 2;
flex-shrink: 0; /* No se comprime */
}
.elemento:nth-child(3) {
flex-grow: 0; /* No crece */
flex-shrink: 2; /* Se comprime más fuerte */
}
Si la suma de los anchos base (300px) es menor que el ancho del contenedor (500px), el espacio restante (200px) se distribuirá entre el primer y el segundo elemento en proporción 1:2 según flex-grow.
Si la suma de los anchos base es mayor que el ancho del contenedor, los elementos se comprimirán de acuerdo con sus valores de flex-shrink y sus tamaños base. El elemento con flex-shrink: 0 no se comprimirá.