Como la implementación ha cambiado en el pasado, hay dos implementaciones principales conocidas de flexbox. This page proporciona información básica sobre la implementación anterior y la nueva.
Encontré un buen tutorial para el estado actual de la implementación de Flexbox here.
código HTML Ejemplo de estructura de una página (demo on Codepen here):
<div class="page-wrap">
<section class="main-content" role="main">
Main content: first in source order
</section>
<nav class="main-nav" role="navigation">
Links
</nav>
<aside class="main-sidebar" role="complementary">
Sidebar
</aside>
</div>
para dividir el page-wrap
en 3 piezas con el main-nav
doble de grande que las barras laterales, podríamos utilizar FlexBox. Otra ventaja es que la posición del elemento main-content
en el DOM está antes del main-nav
pero con flexbox podríamos renderizarlo antes del contenido. Esto es útil para los lectores de pantalla, por lo que el contenido se lee primero.
Necesitamos hacer del page-wrap
un contexto de caja flexible. De esta forma, todos los niños se convierten en elementos Flexbox:
.page-wrap {
display: -webkit-box; /* OLD - iOS 6-, Safari 3.1-6 */
display: -moz-box; /* OLD - Firefox 19- (buggy but mostly works) */
display: -ms-flexbox; /* TWEENER - IE 10 */
display: -webkit-flex; /* NEW - Chrome */
display: flex; /* NEW, Spec - Opera 12.1, Firefox 20+ */
}
El orden de las propiedades es importante. Debido a que algunos navegadores son compatibles con ambas implementaciones, debemos especificar las propiedades más recientes debajo de las propiedades anteriores. Esto se debe a que display
-property no tiene el prefijo.
Para añadir las anchuras de los elementos:
.main-content {
width: 60%;
}
.main-nav,
.main-sidebar {
-webkit-box-flex: 1; /* OLD - iOS 6-, Safari 3.1-6 */
-moz-box-flex: 1; /* OLD - Firefox 19- */
width: 20%; /* For old syntax, otherwise collapses. */
-webkit-flex: 1; /* Chrome */
-ms-flex: 1; /* IE 10 */
flex: 1; /* NEW, Spec - Opera 12.1, Firefox 20+ */
}
La última cosa que necesitamos hacer es cambiar el orden de los artículos, porque ahora el main-nav
se rinde después de la main-content
.main-content {
-webkit-box-ordinal-group: 2; /* OLD - iOS 6-, Safari 3.1-6 */
-moz-box-ordinal-group: 2; /* OLD - Firefox 19- */
-ms-flex-order: 2; /* TWEENER - IE 10 */
-webkit-order: 2; /* NEW - Chrome */
order: 2; /* NEW, Spec - Opera 12.1, Firefox 20+ */
}
.main-nav {
-webkit-box-ordinal-group: 1;
-moz-box-ordinal-group: 1;
-ms-flex-order: 1;
-webkit-order: 1;
order: 1;
}
.main-sidebar {
-webkit-box-ordinal-group: 3;
-moz-box-ordinal-group: 3;
-ms-flex-order: 3;
-webkit-order: 3;
order: 3;
}
Si miras la lista de correo o incluso la [ED] (http://dev.w3.org/csswg/css3-flexbox/), notarás que está pasando por una inmensa cantidad de cambios. No creo que tengas nada más confiable que la especificación cambiante en este momento ... – BoltClock