CSS Grid

CSS
CSS

¡Desbloquea el curso completo!

IA
Ejercicios
Certificado
Entrar

CSS Grid: Sistema de diseño bidimensional

CSS Grid representa una revolución en el diseño web, proporcionando un sistema de layout bidimensional que permite crear estructuras complejas de manera intuitiva y eficiente. A diferencia de otros métodos de posicionamiento, Grid trabaja simultáneamente con filas y columnas, ofreciendo un control preciso sobre la disposición de elementos en una página web.

Fundamentos del sistema Grid

El sistema Grid Layout se basa en la creación de una cuadrícula invisible donde podemos colocar elementos de forma estratégica. Esta cuadrícula se define mediante un contenedor padre que actúa como grid container y elementos hijos que se comportan como grid items.

La activación de Grid es sorprendentemente simple:

.container {
  display: grid;
}

Una vez activado, el contenedor se convierte en un contexto de cuadrícula donde podemos definir la estructura mediante propiedades específicas.

Definición de la estructura básica

Para crear una cuadrícula funcional, necesitamos especificar las dimensiones de columnas y filas. La propiedad grid-template-columns define el ancho de cada columna, mientras que grid-template-rows establece la altura de cada fila:

.container {
  display: grid;
  grid-template-columns: 200px 1fr 100px;
  grid-template-rows: 80px 1fr 60px;
}

En este ejemplo, creamos tres columnas: la primera de 200 píxeles, la segunda que ocupa el espacio restante (1fr), y la tercera de 100 píxeles. Las filas siguen un patrón similar con alturas específicas.

La unidad fr (fracción) es fundamental en Grid, ya que distribuye el espacio disponible de manera proporcional. Si definimos 1fr 2fr 1fr, la segunda columna será el doble de ancha que las otras dos.

Espaciado y separación

Guarda tu progreso

Inicia sesión para no perder tu progreso y accede a miles de tutoriales, ejercicios prácticos y nuestro asistente de IA.

Progreso guardado
Asistente IA
Ejercicios
Iniciar sesión gratis

Más de 25.000 desarrolladores ya confían en CertiDevs

El espaciado entre elementos se controla mediante las propiedades gap, row-gap y column-gap. Estas propiedades reemplazan los márgenes tradicionales para crear separaciones consistentes:

.container {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
  row-gap: 30px;
  column-gap: 15px;
}

La función repeat() simplifica la definición de patrones repetitivos. repeat(3, 1fr) es equivalente a escribir 1fr 1fr 1fr, pero mucho más conciso.

Posicionamiento de elementos

Los elementos hijos se posicionan automáticamente en la cuadrícula, pero podemos controlar su ubicación específica mediante las propiedades de línea:

.item {
  grid-column-start: 1;
  grid-column-end: 3;
  grid-row-start: 2;
  grid-row-end: 4;
}

Esta sintaxis puede simplificarse usando la notación abreviada:

.item {
  grid-column: 1 / 3;
  grid-row: 2 / 4;
}

El elemento ocupará desde la línea de columna 1 hasta la 3, y desde la línea de fila 2 hasta la 4, creando un área rectangular dentro de la cuadrícula.

Áreas con nombres

Una característica distintiva de Grid es la capacidad de nombrar áreas de la cuadrícula, facilitando el posicionamiento visual:

.container {
  display: grid;
  grid-template-columns: 1fr 3fr 1fr;
  grid-template-rows: auto 1fr auto;
  grid-template-areas: 
    "header header header"
    "sidebar main aside"
    "footer footer footer";
}

.header { grid-area: header; }
.sidebar { grid-area: sidebar; }
.main { grid-area: main; }
.aside { grid-area: aside; }
.footer { grid-area: footer; }

Esta aproximación hace que el código sea más legible y mantiene una correspondencia visual clara entre el CSS y el diseño final.

Alineación y distribución

Grid proporciona un control granular sobre la alineación de elementos tanto dentro de sus celdas como en el contenedor general:

.container {
  display: grid;
  justify-items: center;    /* Alineación horizontal de items */
  align-items: center;      /* Alineación vertical de items */
  justify-content: space-between; /* Distribución horizontal del grid */
  align-content: center;    /* Distribución vertical del grid */
}

Para elementos individuales, podemos usar propiedades específicas:

.item {
  justify-self: end;   /* Alineación horizontal individual */
  align-self: start;   /* Alineación vertical individual */
}

Diseño responsivo con Grid

La adaptabilidad es inherente a Grid gracias a funciones como minmax() y auto-fit:

.container {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
  gap: 20px;
}

Esta configuración crea columnas flexibles que se ajustan automáticamente al espacio disponible, manteniendo un ancho mínimo de 250 píxeles y expandiéndose según sea necesario.

La función minmax() establece límites mínimos y máximos para el tamaño de tracks, mientras que auto-fit permite que las columnas se colapsen cuando no hay suficiente contenido.

Integración con el flujo del documento

Grid respeta el flujo natural del documento HTML, pero ofrece la flexibilidad de reorganizar elementos visualmente sin alterar la estructura semántica. Los elementos se colocan automáticamente siguiendo el orden del HTML, a menos que se especifique lo contrario mediante propiedades de posicionamiento.

Esta característica es especialmente valiosa para la accesibilidad, ya que mantiene un orden lógico para lectores de pantalla mientras permite libertad visual completa.

Completa CSS y certifícate

Únete a nuestra plataforma y accede a miles de tutoriales, ejercicios prácticos, proyectos reales y nuestro asistente de IA personalizado para acelerar tu aprendizaje.

Asistente IA

Resuelve dudas al instante

Ejercicios

Practica con proyectos reales

Certificados

Valida tus conocimientos

Más de 25.000 desarrolladores ya se han certificado con CertiDevs

⭐⭐⭐⭐⭐
4.9/5 valoración