En este tema, aprenderemos sobre las propiedades del contenedor Grid en CSS. CSS Grid Layout es un sistema de diseño bidimensional que permite crear diseños complejos de manera sencilla y eficiente. El contenedor Grid es el elemento que contiene los elementos hijos que se organizan en una cuadrícula.
- Definiendo un Contenedor Grid
Para convertir un elemento en un contenedor Grid, utilizamos la propiedad display
con el valor grid
.
- Propiedades del Contenedor Grid
2.1. grid-template-columns
Define el número de columnas y su tamaño.
En este ejemplo, el contenedor Grid tendrá tres columnas con anchos de 100px, 200px y 100px respectivamente.
Ejemplo Práctico
<!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Grid Template Columns</title> <style> .container { display: grid; grid-template-columns: 100px 200px 100px; gap: 10px; } .item { background-color: lightblue; padding: 20px; text-align: center; } </style> </head> <body> <div class="container"> <div class="item">1</div> <div class="item">2</div> <div class="item">3</div> </div> </body> </html>
2.2. grid-template-rows
Define el número de filas y su tamaño.
En este ejemplo, el contenedor Grid tendrá tres filas con alturas de 50px, 100px y 50px respectivamente.
Ejemplo Práctico
<!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Grid Template Rows</title> <style> .container { display: grid; grid-template-rows: 50px 100px 50px; gap: 10px; } .item { background-color: lightcoral; padding: 20px; text-align: center; } </style> </head> <body> <div class="container"> <div class="item">1</div> <div class="item">2</div> <div class="item">3</div> </div> </body> </html>
2.3. gap
Define el espacio entre las filas y columnas de la cuadrícula.
En este ejemplo, el contenedor Grid tendrá un espacio de 20px entre cada fila y columna.
Ejemplo Práctico
<!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Grid Gap</title> <style> .container { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 20px; } .item { background-color: lightgreen; padding: 20px; text-align: center; } </style> </head> <body> <div class="container"> <div class="item">1</div> <div class="item">2</div> <div class="item">3</div> </div> </body> </html>
2.4. grid-auto-rows y grid-auto-columns
Define el tamaño de las filas y columnas generadas automáticamente.
En este ejemplo, cualquier fila o columna generada automáticamente tendrá un tamaño de 100px.
Ejemplo Práctico
<!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Grid Auto Rows and Columns</title> <style> .container { display: grid; grid-auto-rows: 100px; grid-auto-columns: 100px; gap: 10px; } .item { background-color: lightyellow; padding: 20px; text-align: center; } </style> </head> <body> <div class="container"> <div class="item">1</div> <div class="item">2</div> <div class="item">3</div> <div class="item">4</div> </div> </body> </html>
2.5. grid-template-areas
Define áreas dentro de la cuadrícula que pueden ser referenciadas por los elementos hijos.
.container { display: grid; grid-template-areas: "header header header" "sidebar content content" "footer footer footer"; }
En este ejemplo, se definen áreas llamadas header
, sidebar
, content
y footer
.
Ejemplo Práctico
<!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Grid Template Areas</title> <style> .container { display: grid; grid-template-areas: "header header header" "sidebar content content" "footer footer footer"; gap: 10px; } .header { grid-area: header; background-color: lightblue; } .sidebar { grid-area: sidebar; background-color: lightcoral; } .content { grid-area: content; background-color: lightgreen; } .footer { grid-area: footer; background-color: lightyellow; } .item { padding: 20px; text-align: center; } </style> </head> <body> <div class="container"> <div class="header item">Header</div> <div class="sidebar item">Sidebar</div> <div class="content item">Content</div> <div class="footer item">Footer</div> </div> </body> </html>
Ejercicio Práctico
Ejercicio
Crea un contenedor Grid con las siguientes especificaciones:
- Tres columnas con tamaños 1fr, 2fr y 1fr.
- Dos filas con tamaños 100px y 200px.
- Un espacio de 15px entre las filas y columnas.
- Define áreas para
header
,main
,sidebar
yfooter
.
Solución
<!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Ejercicio Grid</title> <style> .container { display: grid; grid-template-columns: 1fr 2fr 1fr; grid-template-rows: 100px 200px; gap: 15px; grid-template-areas: "header header header" "sidebar main main" "footer footer footer"; } .header { grid-area: header; background-color: lightblue; } .sidebar { grid-area: sidebar; background-color: lightcoral; } .main { grid-area: main; background-color: lightgreen; } .footer { grid-area: footer; background-color: lightyellow; } .item { padding: 20px; text-align: center; } </style> </head> <body> <div class="container"> <div class="header item">Header</div> <div class="sidebar item">Sidebar</div> <div class="main item">Main</div> <div class="footer item">Footer</div> </div> </body> </html>
Conclusión
En esta lección, hemos aprendido sobre las propiedades del contenedor Grid en CSS. Estas propiedades nos permiten definir la estructura de nuestra cuadrícula, incluyendo el número y tamaño de filas y columnas, el espacio entre ellas, y la definición de áreas específicas dentro de la cuadrícula. Con esta base, estamos listos para explorar las propiedades de los ítems Grid en la siguiente lección.
Maestría en CSS: De Principiante a Avanzado
Módulo 1: Introducción a CSS
- ¿Qué es CSS?
- Sintaxis y Selectores de CSS
- Cómo Añadir CSS a HTML
- Propiedades Básicas de CSS
- Colores en CSS
- Unidades y Medidas en CSS
Módulo 2: Estilización de Texto y Fuentes
- Propiedades de Texto
- Propiedades de Fuentes
- Integración de Google Fonts
- Alineación y Espaciado de Texto
- Decoración y Transformación de Texto
Módulo 3: Modelo de Caja y Diseño
- Entendiendo el Modelo de Caja
- Margen y Relleno
- Borde y Contorno
- Ancho y Alto
- Tamaño de Caja
- Propiedad Display de CSS
Módulo 4: Posicionamiento y Flotación
- Propiedad Position de CSS
- Posicionamiento Estático, Relativo, Absoluto y Fijo
- Flotación y Limpieza en CSS
- Creando Diseños con Flotación
- Índice Z en CSS
Módulo 5: Flexbox
- Introducción a Flexbox
- Propiedades del Contenedor Flex
- Propiedades del Ítem Flex
- Creando Diseños con Flexbox
- Diseño Responsivo con Flexbox
Módulo 6: CSS Grid
- Introducción a CSS Grid
- Propiedades del Contenedor Grid
- Propiedades del Ítem Grid
- Creando Diseños con CSS Grid
- Diseño Responsivo con CSS Grid
Módulo 7: Técnicas Avanzadas de CSS
Módulo 8: Diseño Responsivo
- Introducción al Diseño Responsivo
- Consultas de Medios
- Tipografía Responsiva
- Imágenes Responsivas
- Diseño Mobile-First
Módulo 9: Preprocesadores y Frameworks
- Introducción a los Preprocesadores de CSS
- Conceptos Básicos de Sass
- Conceptos Básicos de Less
- Introducción a los Frameworks de CSS
- Usando Bootstrap
Módulo 10: Mejores Prácticas y Optimización
- Mejores Prácticas de CSS
- Organización del Código CSS
- Minificación de CSS
- Optimización del Rendimiento de CSS
- Depuración de CSS