Actualmente implementando CSS Grid Layout (Chromium/Blink & Safari/WebKit)
Miembro de Igalia
<table>
float
display: inline-block;
display: table;
display: flex;
display: grid;
display: grid;
Rompe el flujo habitual de la página web
grid-template-columns
& grid-template-rows
¡Creación de cajas desde CSS!
<div class="grid">
<div class="a">A</div>
<div class="b">B</div>
<div class="c">C</div>
<div class="d">D</div>
</div>
grid-column
& grid-row
Orden del DOM ≠ Orden visual
<div class="grid">
<div class="a">A</div>
<div class="b">B</div>
<div class="c">C</div>
</div>
Utilizar identificadores personalizados para las líneas
Una línea puede tener varios nombres
<div class="grid">
<div class="a">A</div>
<div class="b">B</div>
<div class="c">C</div>
</div>
grid-template-areas
### ###### ###### #### #### ### ######## ######## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ###### ## ## ## ## ## ######## ## ######### ## ## ## ## ######### ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ###### ###### #### #### ## ## ## ## ##
<div class="grid">
<div class="a">A</div>
<div class="b">B</div>
<div class="c">C</div>
<div class="d">D</div>
</div>
Especificación CSS Box Alignment
¡Centrado horizontal & vertical!
<div class="grid">
<div class="a">A</div>
<div class="b">B</div>
<div class="c">C</div>
</div>
<div class="grid">
<div class="a">A</div>
<div class="b">B</div>
<div class="c">C</div>
</div>
grid-row-gap
& grid-column-gap
<div class="grid">
<div class="a">A</div>
<div class="b">B</div>
<div class="c">C</div>
<div class="d">D</div>
<div class="e">E</div>
</div>
grid-auto-flow
<form>
<label>Etiqueta</label>
<input>
<label>Checkbox</label>
<input type="checkbox">
<button>Enviar formulario</button>
</form>
grid-auto-columns
& grid-auto-rows
<div class="grid">
<div class="a">A</div>
<div class="b">B</div>
<div class="c">C</div>
<div class="d">D</div>
</div>
repeat()
automáticoValores auto-fill
& auto-fit
para repeat()
repeat()
automático
<div class="grid">
<div class="a">A</div>
<div class="b">B</div>
<div class="c">C</div>
<div class="d">D</div>
<div class="e">E</div>
</div>
El tamaño de los tracks puede ser flexible
.grid {
display: grid;
grid: 100px 1fr auto / 200px 1fr;
grid-template-areas: "header header"
"menu main "
"menu footer";
}
@media (max-width: 400px) {
.grid {
grid: 100px 1fr 100px auto / 1fr;
grid-template-areas: "header"
"main "
"menu "
"footer"; }
}
<form><ul>
<li><label>Etiqueta</label><input></li>
<li><label>Checkbox</label><input type="checkbox"></li>
<li><button>Enviar formulario</button></li>
</ul></form>
<div class="grid">
<div class="title">Title</div>
<div class="nav">Nav</div>
<div class="main">Lorem ipsum...</div>
<div class="aside">Ad</div>
<div class="aside">Adword</div>
</div>
.grid { display: grid;
width: 800px;
grid-template-columns: 200px 1fr auto;
grid-template-rows: 100px auto; }
.title { grid-row: 1; grid-column: 2; }
.nav { grid-row: 2; grid-column: 1; }
.main { grid-row: 2; grid-column: 2; }
.aside { grid-column: 3; }
CSS Grid Layout - https://drafts.csswg.org/css-grid/
La empezó Microsoft en 2010
Candidate Recommendation 9 Febrero 2017
W3C Test Suite
Versión 57 | Marzo 2017 | |
Versión 10.1 | Marzo 2017 | |
Versión 52 | Marzo 2017 | |
Implementación antigua desde IE 10. Con prefijo: -ms |
Progressive Enhancement
@supports
es tu amigo
@supports (display: grid) {
...
}
@supports not (display: grid) {
...
}