Actualmente el ecosistema de los navegadores y CSS viven cambios importantes:

  • Las consultas de contenedor @container
  • El selector relacional :has()

Hoy ambas propiedades cuentan con soporte en Chrome, Firefox, Safari y Edge. Estas propiedades pueden usarse en producción sin ningún tipo de polyfill.

También podemos definir el nombre del contenedor con la propiedad: container-name y procedemos a realizar la consulta indicando el nombre.

Consultas de contenedor: diseños adaptados al espacio

¿Qué son?

Las consultas de contenedor nos permiten definir un componente y que los estilos cambien dependiendo del tamaño del contenedor superior (padre) en el que está ubicado, en lugar de depender del ancho total de la ventana @media (viewport). Esto nos da la posibilidad de volver los componentes modulares y autónomos, adaptados inteligentemente a su contexto.

¿Cómo funcionan? Y un ejemplo pŕactico

Según el ancho del contenedor, es como adapta las columnas:

Imagen del postImagen del postImagen del post

Selector :has() estilos condicionales en CSS

¿Qué es?

El selector :has() permite aplicar estilos a un elemento en función de si contiene cierto descendiente.

¿Cómo funcionan? Y un ejemplo

En este ejemplo evaluamos mediante la consulta de contenedor si el elemento h1 está inmediatamente seguido por el elemento h2 para aplicar un margin distinto:

Imagen del post

Tips pŕacticos:

Usar @container para componentes reutilizables y modulares.

Combinar :has() con consultas de contenedor para crear diseños condicionales.

Si tu HTML tiene un árbol DOM muy grande, evita usar :has() en elementos de nivel superior (por ejemplo, body, main o section con muchos descendientes), porque el navegador tendría que revisar demasiados nodos cada vez que aplique estilos.

En su lugar, usa :has() en elementos más específicos o finales, como un form, una .card o un .list-item. Esto mantiene las reglas rápidas y eficientes, sin afectar el rendimiento de la página.

Conclusiones

Las consultas de contenedor y :has() han pasado de ser experimentales a convertirse en herramientas del CSS moderno.

  • Con @container los componentes se adaptan al espacio disponible.
  • Con :has() puedes definir estilos condicionales según el contenido.

Estas propiedades permiten crear interfaces más modulares, adaptativas y legibles, si aún no las usas, ahora que conoces como funcionan es momento de incorporarlas a tus proyectos para darles mayor calidad y profesionalismo.