Sebastian Heredia
Ángel David Roque Ayala
Muchisimas gracias Sebastian.
Giselly Romero Nuñez
excelenteeeee gracias!!
Comprender cómo funciona la relación entre elementos padres e hijos es el primer paso para dominar CSS Grid. Sin esta base, cualquier intento de construir layouts complejos se convierte en un proceso confuso y lleno de errores. Aquí se explican los fundamentos que permiten organizar filas, columnas y rejillas anidadas de forma clara y efectiva.
¿Qué es una grid y por qué importa hoy en día?
Una grid es una rejilla compuesta por filas y columnas que permite distribuir elementos en una página web [0:20]. Aunque en el pasado bastaba con dos filas y dos columnas, la complejidad actual de los sitios web exige mucho más: headers, footers, secciones, cards, botones y múltiples bloques de contenido que deben coexistir de manera ordenada [0:40].
CSS Grid resuelve ese problema ofreciendo un sistema bidimensional donde podemos definir tanto el eje horizontal como el vertical al mismo tiempo. Esto lo diferencia de otras herramientas como Flexbox, que trabaja principalmente en una sola dirección. En cursos posteriores de diseño web se profundiza en cuándo aplicar cada uno [1:05].
¿Cómo funcionan los elementos padre e hijo en CSS Grid?
La clave está en identificar quién contiene a quién dentro del HTML. El elemento padre es el contenedor externo, y los elementos hijos son todos los que están ubicados directamente dentro de él [1:20].
En la práctica, esto se traduce en una estructura como la siguiente:
html
<div class="container"> <div class="item">1</div> <div class="item">2</div> <div class="item">3</div> </div>div con clase container es el padre.div con clase item son los hijos.Esta distinción es fundamental porque CSS Grid maneja dos grupos de propiedades: unas que se aplican al padre y otras que se aplican a los hijos [1:35]. Confundir a quién le corresponde cada propiedad es uno de los errores más comunes.
¿Por qué la estructura HTML es tan importante?
Muchas veces el problema no está en el CSS sino en cómo se organizó el HTML desde el principio [1:55]. Si la estructura no refleja correctamente las relaciones entre contenedores e hijos, ninguna propiedad de Grid va a funcionar como se espera. La indentación en el código ayuda a visualizar estas relaciones: cada nivel de espaciado a la izquierda indica que ese elemento es hijo del anterior [2:30].
¿Pueden los hijos ser también padres?
Sí, y esta es una de las grandes ventajas de CSS Grid [2:08]. Un elemento hijo puede convertirse simultáneamente en padre de otros elementos internos. Esto permite crear grids anidadas, donde cada nivel tiene su propia distribución de filas y columnas.
html
<div class="container"> <div class="item"> <div class="sub-item">A</div> <div class="sub-item">B</div> </div> <div class="item">2</div> <div class="item">3</div> </div>container es el padre principal.item es hijo de container y al mismo tiempo padre de los sub-item.sub-item son hijos del primer item.item son simplemente hijos del padre principal.Esta jerarquía puede parecer enredada al principio, pero basta con seguir las aperturas y cierres de etiquetas para identificar cada nivel [2:45].
¿Qué propiedad activa CSS Grid en un contenedor?
Todo padre que quiera funcionar como grid necesita tener la propiedad display: grid [3:15]. Sin esta declaración, el navegador no interpreta las propiedades de filas, columnas ni ningún otro valor relacionado con la rejilla.
css .container { display: grid; }
Si un hijo también es padre de otros elementos y necesita su propia rejilla interna, ese hijo también debe llevar display: grid. Así es como se construyen layouts donde, por ejemplo, un cuadro tiene su propia distribución de dos filas y dos columnas independiente del contenedor principal [3:30].
El reto planteado al final de la clase lo confirma: es completamente posible tener un padre con su grid, y dentro de él, hijos que a su vez sean padres con sus propias grids. La clave siempre será respetar las relaciones padre-hijo y aplicar display: grid a cada contenedor que lo requiera.
¿Ya identificas con claridad quién es padre y quién es hijo en tus proyectos? Comparte tu respuesta al quiz en los comentarios.
Sebastian Heredia
Ángel David Roque Ayala
Muchisimas gracias Sebastian.
Giselly Romero Nuñez
excelenteeeee gracias!!
Liza Fernanda Castrillón Díaz
No sé, pero esta imagen me ayudo bastante. espero a a vosotros también!!! <3 
display: grid;
RESUMEN: Usar CSS Grid consiste en tener un elemento padre el cual se definirá la propiedad display grid, sus elementos hijos serán afectados por esta regla, siendo posicionados según la forma establecida la grilla.
Matías Wasiak
Gracias por el aporte!
Kevin Garcia
Les comparto mis apuntes de la clase.
Sebastián Buitrago
la forma mas facil de reconocer a los hijos y a los padres es la identacion por eso esta importante identar bien el codigo, y aunque a veces el editor lo puede hacer bien, a veces es necesario revisar la identacion para dejar nuestro codigo mas limpio, y mas facil de leer
Liza Fernanda Castrillón Díaz
HECHO!!  / repeat(2, 1fr) } .container { background-color: steelblue; height: 200px; } .item { background-color: greenyellow; } .sub-item { background-color: magenta; }
Christian Alvarenga
No sé si me perdí o no pero, creo que no mostró como se crean las grillas, solo que el padre debe tener el valor de grid en la propiedad display. 🤔
Agustin Perez Santiago
si es muy confuso creo que no enseña de la mejor manera
Samuel Gustavo Pérez Flores
Este curso está deficiente en muchos aspectos. Acá pueden ver en la práctica muchos de los conceptos y entender de manera satisfactoria.
LIKE PARA QUE LE LLEGUE A OTRO COMPAÑERO CONFUNDIDO.
Platzi Team
Excelente aporte, muchas gracias compañero
Óscar Andrés Ugarte De La Fuente
No se si lo hice correctamente, pero ahí esta  / repeat(2,1fr); } .container-item{ background-color: black; display: grid; grid-template: repeat(2,1fr) / repeat(2,1fr); } .container-item-child{ background-color: azure; }
¡Espero les sirva de guia!
Quiz con grid  / repeat(2,1fr); background-color: #e6976d; } .Padre{ display: grid; background-color: #f7ac83; grid-template: inherit; } .CblH{ display: flex; background-color: #FBC8AD; justify-content: center; }```
CSS Grid es impresionante, y hace todo más fácil, les comparto una manera de maquetar una página responsive con Grid: https://www.youtube.com/watch?v=9w3gy2dYN_E
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <link href="https://fonts.googleapis.com/css?family=Roboto" rel="stylesheet" /> <link rel="stylesheet" href="grid.css" /> <title>CSS Grid</title> </head> <body> <div class="contenedor"> <header class="header"> <h3>Header</h3> </header> <main class="contenido"> <h2>Contenido</h2> <p> lorem*100 <br /> <br /> lorem*100 </p> </main> <aside class="sidebar"> <h4>SideBar</h4> </aside> <div class="widget-1"> <h4>Widget 1</h4> </div> <div class="widget-2"> <h4>Widget 2</h4> </div> <footer class="footer"> <h4>Footer</h4> </footer> </div> </body> </html>
CSS
* { margin: 0; padding: 0; } body { background-color: #E9ECF4; color: #000000; font-family: 'Roboto', sans-serif; } .contenedor { width: 90%; max-width: 1000px; margin: 20px auto; display: grid; grid-gap: 20px; grid-template-columns: repeat(3, 1fr); grid-template-rows: repeat(4, auto); grid-template-areas: "header header header" "contenido contenido sidebar" "widget-1 widget-2 sidebar" "footer footer footer"; } .contenedor>div, .contenedor .header, .contenedor .sidebar, .contenedor .footer, .contenedor .contenido { background: #fff; padding: 20px; border-radius: 4px; } .contenedor .header { background-color: #12203e; color: white; grid-area: header; } .contenedor .contenido { grid-area: contenido; } .contenedor .sidebar { background-color: #faa43d; display: flex; align-items: center; justify-content: center; min-height: 100px; grid-area: sidebar; } .contenedor .widget-1, .contenedor .widget-2 { background-color: #55a8fd; color: white; height: 100px; display: flex; align-items: center; justify-content: center; } .contenedor .widget-1 { grid-area: widget-1; } .contenedor .widget-2 { grid-area: widget-2; } .contenedor .footer { background-color: #12203e; color: white; text-align: center; grid-area: footer; } @media screen and (max-width: 768px) { .contenedor { grid-template-areas: "header header header" "contenido contenido contenido" "sidebar sidebar sidebar" "widget-1 widget-1 widget-2" "footer footer footer"; } }
Esta fue mi solución
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="style.css/style.css"> <title>Challenge Class 14</title> </head> <body> <div class="grandfather"> <div class="father"> <div class="son"> <p>Heart</p> </div> </div> </div> </body> </html>
*{ box-sizing: border-box; margin: 0 ; padding: 0; } html{ font-size: 62.5%; } .grandfather { display: grid; background-color: #f3bad6; width: 100%; height: 200px; grid-template: repeat(2,1fr)/repeat(2,1fr); } .father { display: grid; background-color: #ea86b6; grid-template: repeat(2,1fr)/repeat(2,1fr); } .son { display: grid; align-items: center; background-color: #e05297; } .son p { text-align: center; font-size: 2.5rem; color: white; }
Comparto como curiosidad un truco para los que sepan utilizar Emmet,. Se puede generar la estructura necesaria para el desafío de la clase haciendo:
div.grid-container-0>div.grid-container-1>div.grid-item{💚}+div*3^div*3^div*3
Esto generaría la siguiente estructura HTML:
<div class="grid-container-0"> <div class="grid-container-1"> <div class="grid-item">💚</div> <div></div> <div></div> <div></div> </div> <div></div> <div></div> <div></div> </div> <div></div> <div></div> <div></div>
El CSS que utilicé fue:
[class ^="grid-container"] { display: grid; grid-template-columns: repeat(2, 50%); } .grid-container-0 { background-color: #791c75; grid-template-rows: repeat(2, 0px); } .grid-container-1 { background-color: #f7c4cd; grid-template-rows: repeat(2, 25px); } .grid-item { background-color: #feefdd; }
El resultado visualmente quedó así: