A excepción de la propiedad align-self
, todas las propiedades que hemos visto hasta ahora se aplican sobre el elemento contenedor. Las siguientes propiedades, sin embargo, se aplican sobre los ítems hijos.
Propiedad | Valor | Descripción |
---|---|---|
flex-grow |
0 | | Número que indica el factor de crecimiento del ítem respecto al resto. |
flex-shrink |
1 | | Número que indica el factor de decrecimiento del ítem respecto al resto. |
flex-basis |
| content | Tamaño base de los ítems antes de aplicar variación. |
order |
0 | | Número (peso) que indica el orden de aparición de los ítems. |
Primero, tenemos la propiedad flex-grow
que indica el factor de crecimiento de los ítems en el caso de que no tengan un ancho específico. Por ejemplo, si con flex-grow
indicamos un valor de 1 a todos sus ítems, tendrían el mismo tamaño cada uno de ellos. Pero si colocamos un valor de 1 a todos los elementos, salvo a uno de ellos, que le indicamos 2, ese ítem será más grande que los anteriores. Los ítems a los que no se le especifique ningún valor, tendrán por defecto valor de 0.
En segundo lugar, tenemos la propiedad flex-shrink
que es la opuesta a flex-grow
. Mientras que la anterior indica un factor de crecimiento, flex-shrink
hace justo lo contrario, aplica un factor de decrecimiento. De esta forma, los ítems que tengan un valor numérico más grande, serán más pequeños, mientras que los que tengan un valor numérico más pequeño serán más grandes, justo al contrario de como funciona la propiedad flex-grow
.
Por último, tenemos la propiedad flex-basis
, que define el tamaño por defecto (de base) que tendrán los ítems antes de aplicarle la distribución de espacio. Generalmente, se aplica un tamaño (unidades, porcentajes, etc…), pero también se puede aplicar la palabra clave content que ajusta automáticamente el tamaño al contenido del ítem, que es su valor por defecto.
Atajo: propiedades de hijos
Existe una propiedad llamada flex
que sirve de atajo para estas tres propiedades de los ítems hijos. Funciona de la siguiente forma.
Ejm
.item { /* flex: <flex-grow> <flex-shrink> <flex-basis> */ flex: 1 3 35%; }