CSS Grid, es un sistema de diseño bidimensional basado en cuadrículas con filas y columnas, haciendo mas fácil el diseño de páginas web sin tener que utilizar elementos flotantes ni posicionamiento. Al igual que las tablas(Table en HTML), el diseño de cuadrícula(grid) nos permite alinear elementos en columnas y filas pero desde el CSS.
Para comenzar, debe definir un elemento contenedor como un grid con display: grid, establecer los tamaños de columna y fila con grid-template-columns y grid-template-rows, y luego colocar sus elementos secundarios en el Grid con grid-column y grid-row.
Ejemplo: en este ejemplo, utilizamos el método explicado anteriormente.
<!DOCTYPE html> <html lang="en"> <head> <style> .main display: grid; grid-template-columns: repeat(4, 1fr); grid-template-rows: repeat(2, 1fr); grid-gap: 5px; background-color: black; padding: 5px; } .markits { background-color: rgb(255, 0, 0); text-align: center; padding: 15px 0; font-size: 1rem; } </style> </head> <body> <div style="background-color:gray;"> <h3 style="text-align: center;"> Bienvenido a <a href="/" target="_blank">Markits</a> </h3> <div class="main"> <div class="markits">Uno</div> <div class="markits">Dos</div> <div class="markits">Tres</div> <div class="markits">Cuatro</div> <div class="markits">Cinco</div> <div class="markits">Seis</div> </div> </div> </body> </html>
See the Pen Ejemplo de Grid CSS by jesus serrano (@jesus-serrano-the-scripter) on CodePen.
CSS Flexbox ofrece un diseño unidimensional. Es útil para asignar y alinear el espacio entre los elementos de un contenedor (hecho de rejillas). Funciona con todo tipo de dispositivos de visualización y tamaños de pantalla.
Para comenzar, debe definir un elemento contenedor como una cuadrícula con display: flex;
Ejemplo: en este ejemplo, utilizamos el método explicado anteriormente.
<!DOCTYPE html> <html lang="en"> <head> <style> .main{ display: flex; grid-gap: 5px; flex-wrap:wrap; background-color: black; padding: 5px; } .markits { background-color: rgb(255, 0, 0); text-align: center; padding: 15px 5px; font-size: 1rem; } </style> </head> <body> <div style="background-color:gray;"> <h3 style="text-align: center;"> Bienvenido a <a href="/" target="_blank">Markits</a> </h3> <div class="main_fl"> <div class="markits_fl">Uno</div> <div class="markits_fl">Dos</div> <div class="markits_fl">Tres</div> <div class="markits_fl">Cuatro</div> <div class="markits_fl">Cinco</div> <div class="markits_fl">Seis</div> </div> </div> </body> </html>
See the Pen Ejemplo de Flexbox by jesus serrano (@jesus-serrano-the-scripter) on CodePen.
Una dimensión Vs. Dos dimensiones:
- Grid está hecho para un diseño bidimensional, mientras que Flexbox es para una dimensión. Esto significa que Flexbox puede funcionar en filas o columnas a la vez, pero Grid puede funcionar en ambas.
- Flexbox le brinda más flexibilidad mientras trabaja en cualquier elemento (fila o columna). El marcado HTML y CSS serán fáciles de administrar en este tipo de escenario.
- Grid le brinda más flexibilidad para moverse por los bloques independientemente de su formato HTML.
Content-First Vs Layout-First:
- La principal singularidad entre Flexbox y Grid es que el primero trabaja con el contenido mientras que el segundo se basa en el diseño.
- El diseño Flexbox se adapta mejor a componentes de aplicaciones y diseños a pequeña escala, mientras que el diseño Grid está diseñado para diseños a mayor escala que no tienen un diseño lineal.
Diferencia entre Grid y Flexbox:
- Dimensionalidad y Flexibilidad:
- Flexbox ofrece un mayor control sobre la alineación y distribución del espacio entre items. Al ser unidimensional, Flexbox solo trata con columnas o filas.
- Grid tiene capacidades de diseño de dos dimensiones que permiten anchos flexibles como unidad de longitud. Esto compensa las limitaciones de Flexbox.
- Alineación:
- Flex Direction permite a los desarrolladores alinear elementos vertical u horizontalmente, lo que se utiliza cuando los desarrolladores crean e invierten filas o columnas (útil en el diseño responsivo).
- CSS Grid implementa unidades de medida fraccionarias(fr) para la fluidez de la cuadrícula y la funcionalidad de palabras clave automáticas para ajustar automáticamente las columnas o filas.
- Gestión de Items:
- Flex Container es el elemento padre, mientras que Flex Item representa a los hijos. El Flex Container puede garantizar una representación equilibrada ajustando las dimensiones del item. Esto permite a los desarrolladores diseñar para tamaños de pantalla fluctuantes.
- Grid admite la ubicación de contenido tanto implícito como explícito. Su automatización incorporada le permite extender automáticamente las líneas de items y copiar valores en la nueva creación del item anterior.
Propiedad | Grid | Flexbox |
---|---|---|
Dimensión | Bi – Dimensional | Uni – Dimensional |
Características | Puede flexibilizar la combinación de elementos a través de funciones que ocupan espacio | Puede llevar el elemento de contenido a una alineación extrema |
Tipo de soporte | Layout First (Primero el diseño) | Content First (Primero el contenido) |
Conclusiones
- CSS Grid te ayuda a crear el diseño exterior de la página web. Puede crear un diseño complejo y responsivo con esto. Por eso se conoce como “Layout First”.
- Flexbox ayuda principalmente a alinear contenido y mover bloques.
- CSS Grid son para diseños 2D. Funciona tanto con filas como con columnas.
- Flexbox funciona mejor en una sola dimensión (ya sea filas ó columnas).
- Ahorrará más tiempo y será más útil si utiliza ambos al mismo tiempo.
- Uno no es mejor que otro todo dependerá de lo que se desea hacer en el sitio web, de echo es normal utilizar ambos diseños en un sitio web.
¿Ya sabes cuales son nuestros servicios?
¿Conocías este tipo de diseño? coméntanoslo
¿Necesitas ayuda con tu desarrollo web o con el marketing de tu negocio? contáctanos
Jesús Serrano
Desarrollador web con amplia experiencia en diferentes lenguajes de programación, Servidores de Bases de datos y servidores web.
Recuerda: El secreto es la Paciencia
Contactar
Si necesitas ayuda con tu desarrollo de software o el marketing de tu negocio no dudes en ponerte en contacto con nosotros.
Teléfono: 4772288223