Lógica en CSS: Función if() y Style Queries

Introduce lógica condicional nativa en tus hojas de estilo. Aprende a cambiar propiedades basándote en valores de variables sin una línea de JS.

Durante décadas, la lógica 'Si pasa esto, haz aquello' (If/Else) era terreno exclusivo de lenguajes de programación o preprocesadores como Sass. CSS está rompiendo esa barrera con la llegada de la función condicional `if()` y las Style Queries.

Estas herramientas permiten que un elemento cambie su apariencia no solo por el tamaño de la pantalla (Media Queries), sino por el *estado* o el *valor* de una variable CSS de su contenedor. Esto permite crear componentes verdaderamente polimórficos y reactivos.

En esta lección exploraremos cómo usar estas funciones para simplificar sistemas de diseño complejos, eliminando cientos de líneas de selectores repetitivos y sustituyéndolos por lógica declarativa.

  • Sintaxis: condición ? valor_si_cierto : valor_si_falso.
  • La función `if()` permite asignar un valor a una propiedad basándose en una prueba lógica. Su estructura es similar al operador ternario de JavaScript: `if(<condición> ? <valor-verdadero> : <valor-falso>)`.
  • Esto es extremadamente útil para manejar 'estados' de componentes. Por ejemplo, puedes definir un `--tamaño` y que la función `if()` decida automáticamente el `padding`, el `font-size` y el `border-radius` en una sola línea, sin tener que crear clases adicionales como `.btn--small` o `.btn--large`.
  • Importante: Esta función está diseñada para trabajar codo con codo con las variables (Custom Properties), haciendo que el CSS sea mucho más programable.
  • @container style(--variable: valor)

La función condicional if()

Sintaxis: condición ? valor_si_cierto : valor_si_falso.

La función `if()` permite asignar un valor a una propiedad basándose en una prueba lógica. Su estructura es similar al operador ternario de JavaScript: `if(<condición> ? <valor-verdadero> : <valor-falso>)`.

Esto es extremadamente útil para manejar 'estados' de componentes. Por ejemplo, puedes definir un `--tamaño` y que la función `if()` decida automáticamente el `padding`, el `font-size` y el `border-radius` en una sola línea, sin tener que crear clases adicionales como `.btn--small` o `.btn--large`.

Importante: Esta función está diseñada para trabajar codo con codo con las variables (Custom Properties), haciendo que el CSS sea mucho más programable.

Style Queries: Consultas de estilo

@container style(--variable: valor)

Mientras que las Container Queries tradicionales miran el *tamaño* del padre, las Style Queries miran el *estilo* del padre. Si un contenedor tiene la variable `--theme: dark`, todos sus hijos pueden reaccionar automáticamente.

Esto resuelve el problema de los 'contextos'. Ya no necesitas selectores complejos como `.dark-mode .card .title`. Ahora la tarjeta simplemente pregunta: '¿Estoy en un contenedor oscuro?' y se auto-ajusta.

Sintaxis básica: `@container style(--featured: true) { ... }`. Esto permite que los componentes sean conscientes de su entorno de una manera mucho más granular.

CSS
61

Lógica en CSS: Función if() y Style Queries

Introduce lógica condicional nativa en tus hojas de estilo. Aprende a cambiar propiedades basándote en valores de variables sin una línea de JS.

Código del tema: display: grid; gap: 1rem;

📘 Teoría

La función condicional if()

Sintaxis: condición ? valor_si_cierto : valor_si_falso.

La función `if()` permite asignar un valor a una propiedad basándose en una prueba lógica. Su estructura es similar al operador ternario de JavaScript: `if( ? : )`.

Esto es extremadamente útil para manejar 'estados' de componentes. Por ejemplo, puedes definir un `--tamaño` y que la función `if()` decida automáticamente el `padding`, el `font-size` y el `border-radius` en una sola línea, sin tener que crear clases adicionales como `.btn--small` o `.btn--large`.

Importante: Esta función está diseñada para trabajar codo con codo con las variables (Custom Properties), haciendo que el CSS sea mucho más programable.

Style Queries: Consultas de estilo

@container style(--variable: valor)

Mientras que las Container Queries tradicionales miran el *tamaño* del padre, las Style Queries miran el *estilo* del padre. Si un contenedor tiene la variable `--theme: dark`, todos sus hijos pueden reaccionar automáticamente.

Esto resuelve el problema de los 'contextos'. Ya no necesitas selectores complejos como `.dark-mode .card .title`. Ahora la tarjeta simplemente pregunta: '¿Estoy en un contenedor oscuro?' y se auto-ajusta.

Sintaxis básica: `@container style(--featured: true) { ... }`. Esto permite que los componentes sean conscientes de su entorno de una manera mucho más granular.

🧪 Aprende probando

Ejemplo Demo: El Componente Inteligente Cambia el valor de la variable en el editor CSS para ver cómo el botón reacciona usando lógica interna sin cambiar el HTML.
Ejemplo Reto: Adaptación de Contexto Tenemos un widget de clima. Si el contenedor tiene la variable '--clima: lluvioso', cambia el icono a azul. Si es '--clima: soleado', cámbialo a naranja.

🧰 Recursos

¿Qué es esto?

Soy Cristian Eslava y a veces hago webs para procrastinar yo y vosotros 😉.

Esta la hice en febrero de 2026 para facilitar el aprendizaje de mis alumnxs. Aprender desarrollo web practicando. La idea es que crezca semanalmente con nuevos temas, tests y retos.

Inspirado en MDN, en W3Schools, en Codepen, en el crack de Manz y en mil sitios de documentación sobre desarrollo web. Quería aportar además de bloques teóricos con ejemplos, la gamificación de los retos y el sistema de test que ya tenía en culTest .

Si te gustó, si no te gustó, si quieres saludarme, o invitarme a 🍻 no dudes en escribirme en cristianeslava@gmail.com .