Curso IT Fundamentos CSS 031_Diseño de cuadrícula Grid
Diseño de cuadrícula Grid
Una cuadrícula consiste en una serie de líneas horizontales y verticales que forman un patrón de diseño. Basándonos en la cuadrícula, podemos organizar elementos de diseño, ayudándonos a diseñar una serie de páginas con elementos de posición y ancho fijos, haciendo nuestras páginas web más uniformes.
Una cuadrícula generalmente tiene muchas columnas (columns) y filas (rows), así como espacios entre filas y columnas, este espacio generalmente se denomina canal (gutter).

Conceptos básicos
El diseño Grid está compuesto por los siguientes conceptos básicos:
- Contenedor de cuadrícula (grid container): El diseño de cuadrícula está compuesto por contenedores de cuadrícula e ítems de cuadrícula. El contenedor de cuadrícula es el contenedor que coloca los ítems de cuadrícula en la cuadrícula. El contenedor de cuadrícula puede ser cualquier elemento, pero generalmente se usa el elemento
div. - Ítem de cuadrícula (grid item): Los ítems de cuadrícula son elementos colocados en el contenedor de cuadrícula. Los ítems de cuadrícula pueden ser cualquier elemento, pero generalmente se usan elementos
div. - Línea de cuadrícula (grid line): Las líneas de cuadrícula son las líneas que dividen el contenedor de cuadrícula en filas y columnas. Las líneas de cuadrícula pueden ser horizontales o verticales.
- Columna de cuadrícula (grid column): Las columnas de cuadrícula son líneas verticales en el contenedor de cuadrícula.
- Fila de cuadrícula (grid row): Las filas de cuadrícula son líneas horizontales en el contenedor de cuadrícula.
Propiedades comunes
Propiedades del contenedor de cuadrícula
El contenedor de cuadrícula tiene las siguientes propiedades para controlar el diseño de cuadrícula:
display: Establece el modo de visualización del contenedor de cuadrícula. El contenedor de cuadrícula debe establecerse comodisplay: gridodisplay: inline-gridpara usar el diseño de cuadrícula.grid-template-columns: Establece el número de columnas y anchos de columna del contenedor de cuadrícula (usando unidades comofr,px,em, etc.).grid-template-rows: Establece el número de filas y alturas de fila del contenedor de cuadrícula (usando unidades comofr,px,em, etc.).grid-template: Establece simultáneamentegrid-template-columnsygrid-template-rows.grid-auto-columns: Establece los anchos de columna del contenedor de cuadrícula.grid-auto-rows: Establece las alturas de fila del contenedor de cuadrícula.
Propiedades del ítem de cuadrícula
Los ítems de cuadrícula tienen las siguientes propiedades para controlar el diseño de ítems de cuadrícula en la cuadrícula:
grid-column: Establece la columna en la que se encuentra el ítem de cuadrícula.grid-row: Establece la fila en la que se encuentra el ítem de cuadrícula.grid-column-start: Establece la posición inicial del ítem de cuadrícula en la columna.grid-column-end: Establece la posición final del ítem de cuadrícula en la columna.grid-row-start: Establece la posición inicial del ítem de cuadrícula en la fila.grid-row-end: Establece la posición final del ítem de cuadrícula en la fila.grid-area: Establece el área en la que se encuentra el ítem de cuadrícula.grid-gap: Establece el espaciado entre líneas de cuadrícula.
Diseño de cuadrícula
Definir anchos de columna y alturas de fila fijos y adaptativos
Ejemplo:
.grid-example{ display: grid; grid-template-columns: 100px 200px auto; /* Primera columna 100px, segunda columna 200px, espacio restante asignado a columna adaptativa */ grid-template-rows: 100px 200px auto; /* Primera fila 100px, segunda fila 200px, espacio restante asignado a fila adaptativa */}.item{ margin: 10px; background-color: rgb(100, 150, 200);} <div class="grid-example"> <div class="item">Demostración Grid</div> <div class="item">Demostración Grid</div> <div class="item">Demostración Grid</div> <div class="item">Demostración Grid</div> <div class="item">Demostración Grid</div> <div class="item">Demostración Grid</div> <div class="item">Demostración Grid</div> <div class="item">Demostración Grid</div> <div class="item">Demostración Grid</div> </div>Efecto:
Uso de porcentajes para definir anchos de columna y alturas de fila
Ejemplo:
.grid-example{ display: grid; grid-template-columns: 30% 2fr 1fr; /* Primera columna ocupa 30%, segunda columna ocupa dos partes del espacio restante, tercera columna ocupa una parte del espacio restante */ grid-template-rows: 30% 2fr 1fr; /* Primera fila ocupa 30%, segunda fila ocupa dos partes del espacio restante, tercera fila ocupa una parte del espacio restante */}.item{ margin: 10px; background-color: rgb(100, 150, 200);} <div class="grid-example"> <div class="item">Demostración Grid</div> <div class="item">Demostración Grid</div> <div class="item">Demostración Grid</div> <div class="item">Demostración Grid</div> <div class="item">Demostración Grid</div> <div class="item">Demostración Grid</div> <div class="item">Demostración Grid</div> <div class="item">Demostración Grid</div> <div class="item">Demostración Grid</div> </div>Efecto:
División equitativa (asignación promedio) de anchos de columna y alturas de fila
Ejemplo:
.grid-example{ display: grid; grid-template-columns: repeat(3, 1fr); /* Tres columnas iguales, cada columna ocupa una parte del espacio restante */ grid-template-rows: repeat(3, 1fr); /* Tres filas iguales, cada fila ocupa una parte del espacio restante */}.item{ margin: 10px; background-color: rgb(100, 150, 200);} <div class="grid-example"> <div class="item">Demostración Grid</div> <div class="item">Demostración Grid</div> <div class="item">Demostración Grid</div> <div class="item">Demostración Grid</div> <div class="item">Demostración Grid</div> <div class="item">Demostración Grid</div> <div class="item">Demostración Grid</div> <div class="item">Demostración Grid</div> <div class="item">Demostración Grid</div> </div>Efecto:
Uso de minmax para definir el ancho y altura mínimos y máximos de columnas y filas
Ejemplo:
.grid-example{ display: grid; grid-template-columns: minmax(100px, 1fr) minmax(200px, 2fr); /* Primera columna ancho mínimo 100px, ocupa una parte del espacio restante; segunda columna ancho mínimo 200px, ocupa dos partes del espacio restante */ grid-template-rows: minmax(100px, 1fr) minmax(200px, 2fr); /* Primera fila altura mínima 100px, ocupa una parte del espacio restante; segunda fila altura mínima 200px, ocupa dos partes del espacio restante */}.item{ margin: 10px; background-color: rgb(100, 150, 200);} <div class="grid-example"> <div class="item">Demostración Grid</div> <div class="item">Demostración Grid</div> <div class="item">Demostración Grid</div> <div class="item">Demostración Grid</div> </div>Efecto:

Espaciado de cuadrícula
El espaciado de cuadrícula está controlado por las dos propiedades grid-row-gap y grid-column-gap. Además, en CSS Grid Level 2 se introdujo la propiedad gap, que puede controlar simultáneamente grid-row-gap y grid-column-gap.
Ejemplo:
.grid-example{ display: grid; grid-template-columns: 30% 30% 30%; grid-template-rows: 200px 200px; grid-row-gap: 50px; /* Espacio entre filas de 50px */ grid-column-gap: 30px; /* Espacio entre columnas de 30px */ /* gap: 50px 30px; Espacio entre filas de 50px, espacio entre columnas de 30px */}.item{ margin: 10px; background-color: rgb(100, 150, 200);} <div class="grid-example"> <div class="item">Demostración Grid</div> <div class="item">Demostración Grid</div> <div class="item">Demostración Grid</div> <div class="item">Demostración Grid</div> <div class="item">Demostración Grid</div> <div class="item">Demostración Grid</div> </div>Efecto:

Posicionamiento de cuadrícula
El posicionamiento de cuadrícula generalmente se refiere al uso de propiedades como grid-column, grid-row y grid-area para posicionar ítems en el diseño de cuadrícula. Estas propiedades se utilizan para especificar las columnas y filas que ocupa un ítem en la cuadrícula, o para especificar directamente el área en la que se encuentra el ítem.
grid-columnes una propiedad para establecer las columnas que abarca un ítem de cuadrícula. Es una abreviatura degrid-column-startygrid-column-end. Congrid-column, puede definir más convenientemente la posición y el número de columnas que abarca un ítem de cuadrícula en dirección horizontal.grid-rowes una propiedad para establecer las filas que abarca un ítem de cuadrícula. Es una abreviatura degrid-row-startygrid-row-end. Congrid-row, puede definir más convenientemente la posición y el número de filas que abarca un ítem de cuadrícula en dirección vertical.- La propiedad
grid-areaes una propiedad abreviada para establecer simultáneamente las propiedadesgrid-row-start,grid-column-start,grid-row-endygrid-column-end. Congrid-area, puede definir más intuitivamente la posición y el tamaño de un ítem de cuadrícula en el diseño de cuadrícula.
Ejemplo:
.example { display: grid; grid-template-columns: repeat(3, 1fr); /* Define 3 columnas, cada columna ocupa 1 parte de espacio */ grid-template-rows: repeat(2, 150px); /* Define 2 filas, cada fila tiene una altura de 150px */ gap: 10px; padding: 20px;}.item { background-color: #f2f2f2; padding: 20px; border: 1px solid #ddd; text-align: center;}/* Posicionamiento con grid-column y grid-row */.item1 { grid-column: 1 / 3; /* Desde columna 1 hasta columna 3 (1+2 columnas) */ grid-row: 1 / 2; /* Desde fila 1 hasta fila 2 (1 fila) */}/* Posicionamiento con grid-area */.item2 { grid-area: 2 / 2 / 3 / 4; /* Desde fila 2, columna 2 hasta fila 3, columna 4 (2 filas) (2+3 columnas) */}<div class="example"> <div class="item item1">Item 1</div> <div class="item item2">Item 2</div> <div class="item">Item 3</div> <div class="item">Item 4</div> <div class="item">Item 5</div> <div class="item">Item 6</div></div>Efecto:

Ejemplo:
body { margin: 0; padding: 0;}
.container { display: grid; grid-template-columns: 1fr 2fr; /* Define dos columnas, primera columna ocupa una parte, segunda columna ocupa dos partes */ grid-template-rows: auto; /* Define altura de fila, primera y tercera fila altura determinada por contenido, segunda fila ocupa espacio restante */ grid-template-areas: "header header" "sidebar main" "footer footer"; /* Define diseño de áreas, cada área representada por una cadena, espacios separan celdas, salto de línea representa nueva fila */ min-height: 100vh; /* Establece altura mínima, asegura que el footer sea visible incluso cuando la altura del contenido es menor que el viewport */}
.header { grid-area: header; /* Coloca .header en el área llamada "header" */ background-color: #333; color: #fff; padding: 10px;}
.sidebar { grid-area: sidebar; /* Coloca .sidebar en el área llamada "sidebar" */ background-color: #f2f2f2; padding: 10px;}
.main { grid-area: main; /* Coloca .main en el área llamada "main" */ padding: 10px;}
.footer { grid-area: footer; /* Coloca .footer en el área llamada "footer" */ background-color: #333; color: #fff; padding: 10px;} <div class="container"> <div class="header">Header</div> <div class="sidebar">Sidebar</div> <div class="main"> <h1>Main Content</h1> <p>This is the main content area.</p> </div> <div class="footer">Footer</div> </div>Efecto:
