La dirección principal puede ser la altura o el ancho del elemento, dependiendo del valor de flex-direction.
El espacio restante es el tamaño del contenedor flexible menos el tamaño de todos los elementos flexibles juntos. Si todos los ítems dentro del contenedor tienen el mismo factor de crecimiento, todos los elementos reciben la misma cantidad del espacio restante. De lo contrario, el espacio restante se distribuye en función de los diferentes factores de crecimientos de cada item.
#main div:nth-of-type(1) {flex-grow: 1;}
#main div:nth-of-type(2) {flex-grow: 3;}
#main div:nth-of-type(3) {flex-grow: 1;}
#main div:nth-of-type(4) {flex-grow: 1;}
#main div:nth-of-type(5) {flex-grow: 1;}
</style>
</head>
<body>
<h1>La propiedad flex-grow </h1>
<div id="main">
<div style="background-color:coral;"></div>
<div style="background-color:lightblue;"></div>
<div style="background-color:khaki;"></div>
<div style="background-color:pink;"></div>
<div style="background-color:lightgrey;"></div>
</div>
<p><b>Nota:</b> En Internet Explorer 10 y versiones anteriores no sosportan esta propiedad.</p>
</body>
</html>
La propiedad flex-grow es la primera que veremos que se aplica a los elementos que están dentro del contenedor, es decir a los items.
Esta propiedad almacena un valor entero y controla que tanto crecerá el item rellenando el espacio no utilizado por los otros items.
El valor por defecto de la propiedad flex-grow es cero (no tiene una unidad de medida ya que indica un factor de crecimiento)
Veamos un ejemplo para entender esta propiedad. Si tenemos tres items probemos de definir el factor de crecimiento con el valor 1 para el primer item y dejemos con cero los otros dos flex-grox:
Inicialmente la propiedad flex-grow de cada items tiene un valor 0 y podemos ver que a la derecha aparece en negro todo el espacio del contenedor no ocupado por las cajas flexibles. Inmediatamente que cambiamos el valor por un 1 para el flex-grow de la primera caja flexible comprobamos que todo ese espacio disponible es acaparado por dicha caja.