miguedocs

Grid - Parte 1

Grid es un sistema de maquetación bidimensional que permite manejar filas y columnas al mismo tiempo.

🏁 Grid CSS - Parte 1: Introducción

CSS Grid Layout es el sistema de maquetación más potente de CSS. A diferencia de Flexbox, que es unidimensional, Grid es bidimensional, lo que significa que puede manejar tanto filas como columnas al mismo tiempo.


🏗️ Conceptos Básicos

Para activar Grid, aplicamos display: grid al contenedor. Los elementos hijos se convertirán automáticamente en Grid Items.

.container {
  display: grid;
  /* Definimos la estructura de la grilla */
  grid-template-columns: 200px 1fr; /* 2 columnas */
  grid-template-rows: 100px auto;    /* 2 filas */
}

📏 Unidades de Medida en Grid

La Unidad Fraction (fr)

La unidad fr representa una fracción del espacio disponible en el contenedor. Es la unidad recomendada para crear diseños flexibles.

DefiniciónResultado
1fr 1frDos columnas del 50% cada una.
1fr 2frLa segunda columna es el doble de grande que la primera.
1fr 100pxUna columna de 100px y la otra ocupa todo el resto del espacio.
.grilla-flexible {
  display: grid;
  grid-template-columns: 1fr 2fr 1fr; /* La columna central ocupa el 50% total */
}

Diferencia entre auto y fr:

  • auto: El tamaño depende del contenido del elemento. Si el texto es largo, la columna crece.
  • fr: El tamaño depende del espacio disponible en el contenedor, ignorando el contenido (a menos que este desborde físicamente).

🛠️ Configuración de Columnas y Filas

grid-template-columns

Define el número y ancho de las columnas.

grid-template-columns: 100px auto 1fr; /* Mixto: Fijo, dinámico y flexible */

grid-template-rows

Define el número y alto de las filas. Si los elementos no caben en las filas definidas, Grid creará filas nuevas automáticamente.

grid-template-rows: 200px 200px; /* Dos filas de 200px de alto */

🔄 Grillas Automáticas (Implicit Grid)

Cuando tenemos más elementos de los que definimos en grid-template, el navegador genera filas de forma automática. Esto se conoce como la Grilla Implícita.

grid-auto-rows / grid-auto-columns

Permite definir el tamaño que tendrán esas filas o columnas creadas automáticamente.

.container {
  display: grid;
  grid-template-columns: 1fr 1fr;
  /* Todas las filas generadas automáticamente medirán 150px */
  grid-auto-rows: 150px;
}

grid-auto-flow

Controla cómo se van colocando los nuevos elementos.

  • row (Defecto): Añade nuevas filas hacia abajo.
  • column: Añade nuevas columnas hacia los lados.

[!TIP] Grid y Flexbox no son excluyentes. Lo ideal es usar Grid para la estructura general de la página (layout) y Flexbox para el contenido dentro de los componentes.

On this page