====== Grid ======
Módulo de [[informatica:diseno_web:css|CSS]] dedicado a la organización de elementos en una página.
El sistema Grid permite definir una cuadrícula bidimensional
* [[https://caniuse.com/#search=grid|Soporte de Grid en navegadores]]
===== Uso =====
Para usar grid, se utiliza la propiedad ''display'' con el valor ''grid'' en el elemento que haga de contenedor:
body {
display: grid;
}
Si fueran varios cojntenedores grid para mostrar en línea: ''display: inline-grid''.
A continuación es necesario espeficiar una plantilla de columnas o filas. Si queremos 12 columnas de igual tamaño:
body {
display: grid;
grid-template-columns: repeat(12, 1fr);
}
Para las filas, usaríamos ''grid-template-rows''.
La unidad ''fr'' indica cuántas "fracciones" del ancho total ocupará un columna o fila
==== Tamaño de los elementos ====
* ''grid-column-start''
* ''grid-column-end''
* ''grid-column'' es una combinación de las dos anteriores
Si tenemos una rejilla de 12 columnas y queremos que un elemento ocupe 3 columnas:
.feature {
grid-column-end: span 3;
}
==== Posicionamiento avanzado de los elementos ====
body {
display: grid;
grid-template-areas:
"title title . . ."
". date . desc desc"
"attend . . desc desc"
". img img . ."
". img img . footer";
}
El espacio en blanco indica separación entre columnas. Para describir celdas vacías es convención utilizar el punto (''.'')
Habremos construidos una cuadrícula de 5 columnas y 5 filas. Para indicar qué elemento se colocará dónde, le indicamos el nombre del área que usamos en la plantilla:
h1 {
grid-area: title;
}
time {
grid-area: date;
}
.desc {
grid-area: desc;
}
.attend {
grid-area: attend;
}
.img {
grid-area: img;
}
footer {
grid-area: footer;
}
===== Rejillas implícitas =====
* ''grid-auto-flow''
Para definir una rejilla implícita, estableceremos el flujo automático de elementos en filas y permitiremos que rellenen huecos cambiando el orden si es necesario (''dense''):
main {
display: grid;
grid-auto-flow: row dense;
}
===== Número de pistas dinámico =====
grid-template-columns: repeat(auto-fit, 350px);
Con ''auto-fit'' estamos indicando que se calcule el número de columnas necesario para rellenar los espacios.
Tamaño de pistas dinámico:
grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
Esto nos definirá cuantas columnas sean necesarias de idéntico ancho de forma que rellenen el contenedor.