✦ Container Query

El componente consulta su propio contenedor. No importa el tamaño del viewport: si cabe, cambia de layout. Reutilizable en cualquier contexto.

✦ Media Query

El componente consulta el viewport. Si la pantalla supera 768px, aplica el layout horizontal, aunque el contenedor solo tenga 200px disponibles.

Ancho de los contenedores 500px
@container reacciona al contenedor
🎨
CSS

Container Query

Me adapto al espacio que tengo, no a la pantalla.

Contenedor: apilado
@media reacciona al viewport
🎨
CSS

Media Query

Yo miro el viewport, no el espacio que me dan.

Viewport: apilado

El CSS de cada técnica

Container Query

/* 1. Declarar el contenedor */
.cq-wrapper {
  container-type: inline-size;
  container-name: card-cq;
}

/* 2. Query sobre el CONTENEDOR */
@container card-cq (min-width: 320px) {
  .card {
    grid-template-columns: 120px 1fr;
  }
}

/* Fuente relativa al contenedor */
.card__title {
  font-size: clamp(.85rem, 5cqw, 1.1rem);
}

Media Query

/* No hay contenedor que declarar */




/* Query sobre el VIEWPORT */
@media (min-width: 768px) {
  .card {
    grid-template-columns: 120px 1fr;
  }
}

/* Fuente fija, no sabe su contexto */
.card__title {
  font-size: 0.95rem;
}