En este tema, exploraremos las propiedades específicas de los ítems dentro de un contenedor CSS Grid. Estas propiedades nos permiten controlar cómo se posicionan y dimensionan los elementos hijos dentro de la cuadrícula. A continuación, desglosaremos cada una de estas propiedades con ejemplos prácticos y ejercicios para reforzar el aprendizaje.
grid-column-start y grid-column-end
grid-column-start y grid-column-endEstas propiedades definen en qué línea de la cuadrícula comienza y termina un ítem en el eje de las columnas.
Sintaxis
Ejemplo
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Propiedades del Ítem Grid</title>
<style>
.grid-container {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 10px;
}
.item {
background-color: lightblue;
padding: 20px;
text-align: center;
}
.item1 {
grid-column-start: 1;
grid-column-end: 3;
}
.item2 {
grid-column-start: 3;
grid-column-end: 5;
}
</style>
</head>
<body>
<div class="grid-container">
<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>
</body>
</html>Explicación
grid-column-start: 1;ygrid-column-end: 3;en.item1hacen que el ítem ocupe desde la primera hasta la tercera línea de columna.grid-column-start: 3;ygrid-column-end: 5;en.item2hacen que el ítem ocupe desde la tercera hasta la quinta línea de columna.
grid-row-start y grid-row-end
grid-row-start y grid-row-endEstas propiedades definen en qué línea de la cuadrícula comienza y termina un ítem en el eje de las filas.
Sintaxis
Ejemplo
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Propiedades del Ítem Grid</title>
<style>
.grid-container {
display: grid;
grid-template-rows: repeat(4, 100px);
gap: 10px;
}
.item {
background-color: lightcoral;
padding: 20px;
text-align: center;
}
.item1 {
grid-row-start: 1;
grid-row-end: 3;
}
.item2 {
grid-row-start: 3;
grid-row-end: 5;
}
</style>
</head>
<body>
<div class="grid-container">
<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>
</body>
</html>Explicación
grid-row-start: 1;ygrid-row-end: 3;en.item1hacen que el ítem ocupe desde la primera hasta la tercera línea de fila.grid-row-start: 3;ygrid-row-end: 5;en.item2hacen que el ítem ocupe desde la tercera hasta la quinta línea de fila.
grid-area
grid-areaEsta propiedad es una forma abreviada de definir grid-row-start, grid-column-start, grid-row-end y grid-column-end.
Sintaxis
Ejemplo
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Propiedades del Ítem Grid</title>
<style>
.grid-container {
display: grid;
grid-template-columns: repeat(4, 1fr);
grid-template-rows: repeat(4, 100px);
gap: 10px;
}
.item {
background-color: lightgreen;
padding: 20px;
text-align: center;
}
.item1 {
grid-area: 1 / 1 / 3 / 3;
}
.item2 {
grid-area: 3 / 3 / 5 / 5;
}
</style>
</head>
<body>
<div class="grid-container">
<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>
</body>
</html>Explicación
grid-area: 1 / 1 / 3 / 3;en.item1hace que el ítem ocupe desde la primera hasta la tercera línea de fila y desde la primera hasta la tercera línea de columna.grid-area: 3 / 3 / 5 / 5;en.item2hace que el ítem ocupe desde la tercera hasta la quinta línea de fila y desde la tercera hasta la quinta línea de columna.
justify-self y align-self
justify-self y align-selfEstas propiedades permiten alinear individualmente los ítems dentro de su área asignada en la cuadrícula.
Sintaxis
Ejemplo
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Propiedades del Ítem Grid</title>
<style>
.grid-container {
display: grid;
grid-template-columns: repeat(4, 1fr);
grid-template-rows: repeat(4, 100px);
gap: 10px;
}
.item {
background-color: lightyellow;
padding: 20px;
text-align: center;
}
.item1 {
justify-self: start;
align-self: start;
}
.item2 {
justify-self: end;
align-self: end;
}
.item3 {
justify-self: center;
align-self: center;
}
.item4 {
justify-self: stretch;
align-self: stretch;
}
</style>
</head>
<body>
<div class="grid-container">
<div class="item item1">Item 1</div>
<div class="item item2">Item 2</div>
<div class="item item3">Item 3</div>
<div class="item item4">Item 4</div>
</div>
</body>
</html>Explicación
justify-self: start;yalign-self: start;en.item1alinean el ítem al inicio de su área asignada.justify-self: end;yalign-self: end;en.item2alinean el ítem al final de su área asignada.justify-self: center;yalign-self: center;en.item3centran el ítem en su área asignada.justify-self: stretch;yalign-self: stretch;en.item4estiran el ítem para llenar completamente su área asignada.
Ejercicio Práctico
Instrucciones
- Crea una cuadrícula con 3 columnas y 3 filas.
- Coloca 5 ítems en la cuadrícula.
- Usa las propiedades
grid-column-start,grid-column-end,grid-row-start,grid-row-end,justify-selfyalign-selfpara posicionar y alinear los ítems de manera creativa.
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 Práctico de Grid</title>
<style>
.grid-container {
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-template-rows: repeat(3, 100px);
gap: 10px;
}
.item {
background-color: lightgray;
padding: 20px;
text-align: center;
}
.item1 {
grid-column: 1 / 3;
grid-row: 1 / 2;
justify-self: center;
align-self: center;
}
.item2 {
grid-column: 3 / 4;
grid-row: 1 / 3;
justify-self: end;
align-self: start;
}
.item3 {
grid-column: 1 / 2;
grid-row: 2 / 4;
justify-self: start;
align-self: end;
}
.item4 {
grid-column: 2 / 4;
grid-row: 3 / 4;
justify-self: stretch;
align-self: stretch;
}
.item5 {
grid-column: 2 / 3;
grid-row: 2 / 3;
justify-self: center;
align-self: center;
}
</style>
</head>
<body>
<div class="grid-container">
<div class="item item1">Item 1</div>
<div class="item item2">Item 2</div>
<div class="item item3">Item 3</div>
<div class="item item4">Item 4</div>
<div class="item item5">Item 5</div>
</div>
</body>
</html>Explicación
item1ocupa las columnas 1 y 2, y la fila 1, centrado en su área.item2ocupa la columna 3 y las filas 1 y 2, alineado al final y al inicio.item3ocupa la columna 1 y las filas 2 y 3, alineado al inicio y al final.item4ocupa las columnas 2 y 3, y la fila 3, estirado en su área.item5ocupa la columna 2 y la fila 2, centrado en su área.
Conclusión
En esta lección, hemos aprendido cómo usar las propiedades del ítem Grid para controlar la posición y alineación de los elementos dentro de una cuadrícula. Estas propiedades son esenciales para crear diseños complejos y responsivos con CSS Grid. En el siguiente tema, exploraremos cómo crear diseños completos utilizando CSS Grid.
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
