9.1 Propiedad grid-template-areas
CSS Grid Layout ofrece grandes posibilidades para crear diseños complejos mediante áreas nombradas
(grid areas
). La propiedad grid-template-areas
permite definir áreas de la cuadrícula que se pueden usar para
una ubicación simplificada de elementos. Esta propiedad permite a los desarrolladores organizar visualmente el diseño y facilitar su mantenimiento.
Conceptos básicos de grid-template-areas
-
Definición de áreas:
- La propiedad
grid-template-areas
permite asignar nombres a las diferentes áreas de la cuadrícula - Cada nombre de área representa un grupo rectangular de celdas
- La propiedad
-
Uso de áreas nombradas:
-
Las áreas definidas se pueden usar para colocar elementos, estableciendo la propiedad
grid-area
para cada elemento
-
Las áreas definidas se pueden usar para colocar elementos, estableciendo la propiedad
Sintaxis de grid-template-areas:
.container {
display: grid;
grid-template-areas:
"header header header"
"sidebar main main"
"footer footer footer"
}
Sintaxis para elementos de Grid:
.header {
grid-area: header;
}
.sidebar {
grid-area: sidebar;
}
.main {
grid-area: main;
}
.footer {
grid-area: footer;
}
Explicación:
- Cada línea en el valor de
grid-template-areas
representa una fila en la cuadrícula - Cada palabra en la línea representa una celda o grupo de celdas
- Los puntos (.) se pueden usar para celdas vacías
9.2 Ejemplo de uso de grid-template-areas
Ejemplo de implementación completa:
CSS
.grid-container {
display: grid;
grid-template-areas:
"header header header"
"sidebar main main"
"footer footer footer";
grid-gap: 10px;
}
.header {
grid-area: header;
background-color: #2ecc71;
padding: 20px;
text-align: center;
}
.sidebar {
grid-area: sidebar;
background-color: #3498db;
padding: 20px;
text-align: center;
}
.main {
grid-area: main;
background-color: #9b59b6;
padding: 20px;
text-align: center;
}
.footer {
grid-area: footer;
background-color: #e74c3c;
padding: 20px;
text-align: center;
}
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Ejemplo Grid Areas</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div class="grid-container">
<div class="header">Header</div>
<div class="sidebar">Sidebar</div>
<div class="main">Main Content</div>
<div class="footer">Footer</div>
</div>
</body>
</html>
Explicación del código:
-
.grid-container
: define el contenedor de la cuadrícula usandodisplay: grid
y establece el diseño de la cuadrícula congrid-template-areas
. En este caso, el diseño consiste en tres filas: la primera fila es el encabezado, la segunda fila consiste en la barra lateral y el contenido principal, la tercera fila es el pie de página. -
.header
,.sidebar
,.main
,.footer
: definen los estilos para las diferentes áreas de la cuadrícula y las vinculan con los nombres degrid-template-areas
usando la propiedadgrid-area
.
9.3 Gestión de áreas vacías
La propiedad grid-template-areas
permite dejar áreas vacías utilizando el símbolo de punto
(.) para denotar espacio vacío.
Ejemplo de implementación completa:
CSS
.grid-container {
display: grid;
grid-template-areas:
"header header header"
". main ."
"footer footer footer";
grid-gap: 10px;
}
.header {
grid-area: header;
background-color: #2ecc71;
padding: 20px;
text-align: center;
}
.main {
grid-area: main;
background-color: #9b59b6;
padding: 20px;
text-align: center;
}
.footer {
grid-area: footer;
background-color: #e74c3c;
padding: 20px;
text-align: center;
}
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Áreas Vacías en Grid Areas</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div class="grid-container">
<div class="header">Header</div>
<div class="main">Main Content</div>
<div class="footer">Footer</div>
</div>
</body>
</html>
Explicación del código:
-
.grid-container
: crea un contenedor de cuadrícula con tres áreas: encabezado, contenido principal y pie de página. La fila del medio contiene áreas vacías a la izquierda y derecha del contenido principal. -
.header
,.main
,.footer
: definen estilos para las áreas y las vinculan con los nombres de las áreas engrid-template-areas
GO TO FULL VERSION