Esta nueva funcionalidad de CSS3 con nombre de juguete nos va a ser de gran utilidad, aunque lamentablemente, aun no está 100% implementada en los navegadores para poder jugar con ella.
Flexbox va a suponer un auténtico cambio en el modelo de cajas, o una nueva perspectiva para trabajar con ellas.
La propiedad Flexible Box, o flexbox, de CSS3 es un modo de diseño que permite colocar los elementos de una página para que se comporten de forma predecible cuando el diseño de la página debe acomodarse a diferentes tamaños de pantalla y diferentes dispositivos. Para muchas aplicaciones, el modelo "caja flexible" produce una mejora sobre el modelo "bloque" porque no utiliza la propiedad float, ni hace que los márgenes del contenedor flexible interfieran con los márgenes de sus contenidos.
El model de cajas flexibles es un tema extenso que debería ser comentado a parte. Básicamente y a modo superresumido, diremos que al declarar un elemento contenedor con display: box; haremos que sus primeros hijos, siempre que no esten posicionados con un position: absolute;, se posicionen de determinadas maneras.
Esas determinadas maneras, es decir, el cómo queremos que se coloquen, lo hacemos dándole propiedades y valores al elemento contendor, y no a sus hijos.
Estos nuevos valores y atributos CSS3 tales como flex-box: , box-orient: , box-pack o box-align son algunos de los básicos a utilizar en el sistema flex-box.
En nuestro ejemplo, todos los atributos funcionales se los daremos al contenedor padre; así display: box; hará que empiece a comportarse como tal.
box-orient: horizontal; hará que los elementos se dispongan de izquierda a derecha (con varios elementos y el valor en vertical se observaría como se colocan uno debajo del otro).
box-pack: center; hará que los elementos hijos se centren. Otras valores de box-pack son start, end, o justify. ¿Te suenan¿
Los floats ya no tendrán utilidad aquí, y el modo de maquetar los elementos será mucho más sencillo.
CSS
.padre {
/* estilos basicos */
width: 100%;
height: 95px;
border: 1px solid #555;
/* flexbox */
display: -webkit-box;
-webkit-box-orient: horizontal;
-webkit-box-pack: center;
-webkit-box-align: center;
display: -moz-box;
-moz-box-orient: horizontal;
-moz-box-pack: center;
-moz-box-align: center;
/* ie wtf */
display: -ms-box;
-ms-box-orient: horizontal;
-ms-box-pack: center;
-ms-box-align: center;
display: box;
box-orient: horizontal;
box-pack: center;
box-align: center;
}
.hijo {
background-color: #d08dff;
padding: 0.6em;
}
Para mayor información sobre flexbox, puedes consultar el documento CSS Flexible Box Layout Module Level 1 del consorcio W3C.
Y para profundizar y aprender flex-box de un modo menos críptico, puedes visitar este enlace en inglés sobre CSS3 Flexbox de la web Isotoma o este otro link en español muy interesante de Mozilla Network Development.
Flex-box no funciona en internet explorer, qué raro..., sin embargo, entre otras soluciones javaScript, existe un interesante plugin llamado 51266 Erili Slim Wash Azul Mujer para Senta Vaqueros LTB vwqBff que nos puede ayudar a torear a este querido navegador.
Flex is coming...