El mundo del desarrollo web es un lugar fascinante donde la organización y el diseño juegan un papel primordial. Al trabajar con HTML y CSS, crear una disposición atractiva y funcional para un blog puede llevar tu sitio web al siguiente nivel. El uso de CSS Grid es una herramienta poderosa para lograr esto. Veamos cómo puedes estructurar un blog empleando esta técnica de manera efectiva.
¿Cómo se crean las columnas en CSS Grid?
Para crear una estructura de columnas en nuestro blog, comenzamos por definir un contenedor principal usando CSS Grid. Este contenedor alojará todos los elementos del blog, permitiéndonos organizar eficientemente los contenidos.
.blog-main{display: grid;grid-template-columns:repeat(3,1fr);/* Tres columnas iguales */}
Aquí, grid-template-columns: repeat(3, 1fr); asegura que nuestro contenedor principal esté dividido en tres columnas de igual ancho, donde cada artículo del blog puede ser colocado.
¿Cómo darle estilos al contenedor del blog?
El contenedor principal requiere algunos ajustes estéticos para mejorar su presentación visual. Vamos a aplicar un color de fondo, ajustar el espacio interno, y asegurarnos de que los elementos estén correctamente espaciados.
.blog-main-container{background-color:#f0f0f0;/* Color de fondo */padding:050px40px50px;/* Espaciado interno: abajo e izquierda-derecha */}
La propiedad background-color establece un color base, mientras que padding define el espacio interno del contenedor, asegurando que haya suficiente separación entre el contenido y los bordes del contenedor.
¿Cómo se organiza el título y la imagen del blog?
Para la sección principal del blog, que incluirá un título y una imagen, utilizamos una estructura de cuadrícula que permita acomodar estos elementos eficientemente. Aquí, el título y la imagen se distribuyen visualmente en un diseño de dos fracciones.
.blog-main-new{display: grid;grid-template-columns:2fr1fr;/* Dos fracciones para el título y una para la imagen */}
Esta configuración asegura que el título del blog ocupe un espacio más prominente, mientras que la imagen se ajusta al lado derecho en su fracción dedicada.
¿Cómo manejar problemas de alineación en CSS Grid?
Si alguna de las clases no se alinea correctamente dentro del grid, es posible que tu código necesite reestructurarse. Asegúrate de que todos los elementos hijos estén correctamente anidados dentro del contenedor del grid.
<divclass="blog-main-new"><divclass="blog-title"></div><divclass="blog-image"><imgsrc="ruta-de-la-imagen.jpg"alt="Imagen del blog"></div></div>
Los errores de alineación pueden surgir si los contenedores de elementos no están bien organizados dentro del grid, como ser colocados erróneamente como elementos hermanos en vez de hijos.
¿Cómo agregar márgenes y ajustes de flexibilidad?
Finalmente, para asegurar un espacio estético y flexible, se pueden aplicar margenes y ajustes de tamaño a las imágenes y los textos dentro de nuestros contenedores.
.blog-content{margin:35px;/* Márgenes alrededor del contenido */}
Utilizar márgenes permite que las diferentes partes del blog se respiren visualmente, mejorando el dinamismo general del diseño.
Con estas configuraciones, lograremos que las columnas, imágenes y textos se acomoden perfectamente, generando una disposición armoniosa y profesional para cualquier blog. ¡Ya estás listo para experimentar con CSS Grid y construir tu propio diseño de blog! Tu viaje en el desarrollo web está comenzando, ¡sigue explorando y aprendiendo!
Les dejo un juego para refrescar los conocimientos de CSS grid
CSS Grid Garden
Gracias!
Muy buen juego, que buen aporte.
Rayos no sabia lo del lorem y lo había escrito completo xd :broken_heart: :sweat_smile:
Jejejeje 🤦🏽♂️bueno aprendiste algo mas... Bn por eso!
bro te mentiria sino te dijera que a todos nos pasa
Siento que se complica la vida usando CSS-GRID para todo, cuando usando CSS GRID y Flexbox junto es muchas mas practico, desde mi punto de vista.
Es cuestion de gustos el usar GRID o FLEX
Yo tampoco entiendo por que usa Grid para todo.
Me confundi un poco. Resulta que en el min 5:55 usa:
Grid-template-column: 2fr 1fr;
Y efectivamente expone en el navegador sus dos columnas. Pero en:
Grid-template-rows: 2fr;
¿Porque la rejilla queda con 4 celdas? No debería poner dos filas en el comando Grid-template-rows:
creo que es por el grid auto
cuando el maestro puso grid-columns: 1, se generan las cuatro rejillas debido al grid auto, como solamente hay dos columnas este por defecto brinca a la siguente línea generando otro "grid-template-columns" en la parte de abajo.
Lo que se puede hacer igual es escribir grid-row: 2 y este genera el mismo efecto de las cuatro rejillas pero creo que se entiende mejor :D
Si quieres practicar algo del CSS Grid que vimos en la clase de hoy, te dejo un juego en el que aprenderás lo que necesitas de CSS Grid de una manera muy interactiva! :D
Geniaaal! Gracias por el aporte, estuve jugando un ratito y sin darme cuenta la de como manejo la grilla aumento!
Muy chévere el juego, gracias por la recomendación
:
Les comparto este link Aqui esta muy bien explicado y trae muy buen contenido con respecto al CSS grid. Espero les ayude y les resuelva sus dudas con este tema.
Me pasa lo mismo, me mareo mucho con esto. Pero me gusta, brinda mejores soluciones.
El menú de los maquetadores CSS:
**Grid **en el desayuno!!!
**Flex **en el almuerzo!!!
**Grid **en la cena!!!
ja ja ja ja ja:):):)
Encontré una gran herramienta para generar codigo HTML y CSS para construir tus diseños GRID aquí la dejo: Grid Layoutit
Es la primer ocasión en que logro completar un reto al 100%, se que puedo tener muchos errores pero visualmente esta muy parecido a lo que nos pedían.
adjunto imágenes y mi código, agradezco cualquier critica constructiva.
código html
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>MyBLog</title><link rel="stylesheet" href="css/main.css"><link rel="stylesheet" href="css/font/flaticon.css"></head><body><header><section class="header-icons-container"><div class="icons"><a href=""><span class="flaticon-001-facebook"></span></a><a href=""><span class="flaticon-002-twitter"></span></a><a href=""><span class="flaticon-011-instagram"></span></a><a href=""><span class="flaticon-010-linkedin"></span></a><a href=""><span class="flaticon-008-youtube"></span></a></div></section><nav><section class="nav-logo-container"><a href="index.html"><img src="assetts/img/Logo-negro.png" alt="Logo de mi blog"></a></section><section class="profile-link"><a href="perfil.html">Sobre mí</a></section></nav></header><main class="main-blogs"><section class=" grid-container blogs-news-container"><h3>Soy un título</h3><div class="img-blogs-news"><img src="./assetts/img/main-news-img.png" alt="imagen principal del blog"></div><div class="blogs-news-info-container"><h2>Título del Blogpost</h2><p>It is a long established fact that a reader will be distracted by the
readable content of a page when looking at its layout.The point of using LoremIpsum is that it has a more-or-less
normal distribution of letters,as opposed to using 'Content here,</p><a href="/"class="button-blogs-news">Leer más</a></div></section></main><br><hr><br><Sectionclass="blogs-post-container"><article class="post-container"><img src="./assetts/img/post-1.png" alt="imagen del post"><p>Título del blog post</p><p>descripsion el post
Lorem ipsum dolor sit
amet consectetur adipisicing
elit.Suscipit ut a fugiat
</p><a href=""class="blogs-button">Leer más</a></article><article class="post-container"><img src="./assetts/img/post-1.png" alt="imagen del post"><p>Título del blog post</p><p>descripsion el post
Lorem ipsum dolor sit
amet consectetur adipisicing
elit.Suscipit ut a fugiat
</p><a href=""class="blogs-button">Leer más</a></article><article class="post-container"><img src="./assetts/img/post-1.png" alt="imagen del post"><p>Título del blog post</p><p>descripsion el post
Lorem ipsum dolor sit
amet consectetur adipisicing
elit.Suscipit ut a fugiat
</p><a href=""class="blogs-button">Leer más</a></article><article class="post-container"><img src="./assetts/img/post-1.png" alt="imagen del post"><p>Título del blog post</p><p>descripsion el post
Lorem ipsum dolor sit
amet consectetur adipisicing
elit.Suscipit ut a fugiat
</p><a href=""class="blogs-button">Leer más</a></article><article class="post-container"><img src="./assetts/img/post-1.png" alt="imagen del post"><p>Título del blog post</p><p>descripsion el post
Lorem ipsum dolor sit
amet consectetur adipisicing
elit.Suscipit ut a fugiat
</p><a href=""class="blogs-button">Leer más</a></article><article class="post-container"><img src="./assetts/img/post-1.png" alt="imagen del post"><p>Título del blog post</p><p>descripsion el post
Lorem ipsum dolor sit
amet consectetur adipisicing
elit.Suscipit ut a fugiat
</p><a href=""class="blogs-button">Leer más</a></article></Section><footer><section class="footer-bg-green"></section><section class="footer-creditos"><p>Éste es el primer reto que logro al 100%</p></section></footer></body></html>
No entiendo porque grid hace 2 filas cuando escribe el siguiente código
.blogs-news-img-container {
grid-column:1;
}
Alguien me puede ayudar?
El grid-column es para que posicione el contenido en esa columna, en este caso en la 1
grid-template-columns: 1fr;
y yo aqui haciendo con grid-template-areas, me he olvidado que se puede posicionar de otras maneras en grid :v
Hola, vengo de terminar los cursos de CSS GRID y de Grid con flexbox, los recomiendo antes de tomar este. De hecho con el definitivo de html y css junto con el mobile first son una gran guia para poder hacer este proyecto mobile first.
Para el toogle word wrap en VS CODE pueden utilizar el atajo de letras "ALT+Z".
De esa forman hacen que su código no rompa el viewport de su editor de texto. 👍
Los que no han visto el curso de Grid Layout, le recomiendo que vayan a verlo y regresen
//Pueden utilizar esta forma, es lo mismo que decir 1fr 1frgrid-template-columns:repeat(2 1fr);
o te falta una coma, o mi PC me está fallando. De igual forma corrijo
grid-template-columns:repeat(2, 1fr);```
Por qué en ".blogs-main-new" crea dos filas? En el código pone grid-template-rows: 2fr. Eso no crearía una fila de tamaño 2f?
tambien me estoy haciendo la misma pregunta , ojala alguien la pueda responder , estare tratando de mirar el por que
Para todos aquellos que tenían esta misma pregunta , Despues de investigar un poco sobre Css Grid y analizar el archivo main.css junto con el archivo html construido de la mano del profesor , me di cuenta que efectivamente se le asigno para que tuviera una sola fila como lo dice el compañero , generador de esta pregunta , pero resulta que Css Grid tiene columnas y filas implícitas ,que se crean extra cuando el contenido no cabe en lo que se le asigno del espacio .
Si se dan cuenta dentro de “.blogs-main-new” hay 3 elementos para solo dos columnas lo que hace grid bajo la manga es crear una nueva fila para darle cabida a estos elementos , para que comprueben esto que les estoy diciendo dentro de la misma clase de css mencionada anteriormente coloquen una propiedad mas ---> grid-auto-rows : tamaño (px,fr,etc..) y se darán cuenta que esa fila se expandirá o se contraera dependiendo del valor que le den , esto es porque css grid permite dalre valores a esas filas o columnas que son "implícitas" ,
Si tiene alguna pregunta no duden en dejarla en los comentarios.
El código: grid-template-rows: 1fr; me da los mismo resultados que: grid-template-rows: 2fr;
Eso es porque solo tienes una sola fila (row), si agregas más filas te darás cuenta que no es lo mismo.
Aplicando ese código sería lo mismo que poner
Ocupa 1 fila que su tamaño sea 1 fracción (1/1) Ocupa 1 fila que su tamaño sea 2 fracciones (2/2