# CSS Grid
El diseño grid
ofrece un sistema de diseño basado en cuadrículas, con filas y columnas, lo que facilita el diseño de páginas web sin tener que usar floats y potitions.
# Diseño de cuadrícula
Un elemento HTML se convierte en un contenedor de cuadrícula cuando su displaypropiedad se establece en grid
o inline-grid
.
.grid-container {
display: grid;
}
.inline-grid-container {
display: inline-grid;
}
# Contenedores
Los contenedores de cuadrícula consisten en elementos de cuadrícula, colocados dentro de columnas y filas.
.grid-container {
display: grid;
grid-template-columns: auto auto auto auto;
gap: 10px;
background-color: #2196f3;
padding: 10px;
}
.grid-container > div {
background-color: rgba(255, 255, 255, 0.8);
border: 1px solid black;
text-align: center;
font-size: 30px;
}
<div class="grid-container">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>6</div>
<div>7</div>
<div>8</div>
</div>
# grid-template-columns
Define el número de columnas en su diseño de cuadrícula y puede definir el ancho de cada columna.
.grid-container {
display: grid;
grid-template-columns: auto auto auto auto;
}
# grid-template-row
Define la altura de cada fila.
.grid-container {
display: grid;
grid-template-rows: 80px 200px;
}
# justify-content
Se utiliza para alinear toda la cuadrícula dentro del contenedor.
.grid-container {
display: grid;
justify-content: space-evenly;
}
# align-content
Se usa para alinear verticalmente toda la cuadrícula dentro del contenedor.
.grid-container {
display: grid;
height: 400px;
align-content: center;
}
# Elemento de cuadrícula
De forma predeterminada, un contenedor tiene un elemento de cuadrícula para cada columna, en cada fila, pero puede diseñar los elementos de cuadrícula para que abarquen varias columnas o filas.
# grid-column
Para colocar un elemento, puede hacer referencia a los números de línea o usar la palabra clave "span" para definir cuántas columnas abarcará el elemento.
.item1 {
grid-column: 1 / 5;
}
.item2 {
grid-column: 1 / span 3;
}
# grid-row
Define en qué fila colocar un elemento.
.item1 {
grid-row: 1 / span 2;
}
# grid-area
Se puede utilizar como una propiedad abreviada para las propiedades grid-row-start
, grid-column-start
grid-row-end
ygrid-column-end
.
.item8 {
grid-area: 1 / 2 / 5 / 6;
}
# grid-area
También se puede utilizar para asignar nombres a los elementos de la cuadrícula.
.item1 {
grid-area: myArea;
}
.grid-container {
grid-template-areas: 'myArea myArea myArea myArea myArea';
}
Nota
Cada fila está definida por apóstrofes (' ')
Las columnas de cada fila se definen dentro de los apóstrofes, separadas por un espacio.
.item1 {
grid-area: header;
}
.item2 {
grid-area: menu;
}
.item3 {
grid-area: main;
}
.item4 {
grid-area: right;
}
.item5 {
grid-area: footer;
}
.grid-container {
grid-template-areas:
'header header header header header header'
'menu main main main right right'
'menu footer footer footer footer footer';
}
# Ejemplo
body {
padding: 0;
margin: 0;
box-sizing: border-box;
}
.grid-container {
box-sizing: border-box;
margin: 0;
width: 100vw;
height: 100vh;
display: grid;
grid-template:
'header header' 10%
'menu menu' 10%
'main right' auto
'footer footer ' 10% /
auto 20%;
}
.grid-container > div {
/* background-color: rgba(255, 255, 255, 0.8); */
text-align: center;
padding: 20px 0;
font-size: 30px;
display: flex;
justify-content: center;
align-items: center;
font: 40px sans-serif;
font-weight: bold;
}
.item1 {
grid-area: header;
background-color: lightblue;
}
.item2 {
grid-area: menu;
background-color: lightgoldenrodyellow;
}
.item3 {
grid-area: main;
background-color: lightgreen;
}
.item4 {
grid-area: right;
background-color: lightpink;
}
.item5 {
grid-area: footer;
background-color: lightslategrey;
}
<div class="grid-container">
<div class="item1">header</div>
<div class="item2">menu</div>
<div class="item3">main</div>
<div class="item4">right</div>
<div class="item5">footer</div>
</div>