Logo Guillermo Vásquez

Condicionales en Preprocesadores CSS: Estilos Dinámicos

¿Qué son las Condicionales?

Al igual que en la programación, los preprocesadores CSS como Sass y Less te permiten usar directivas condicionales (@if, @else if, @else en Sass y if en Less) para aplicar estilos basados en el valor de variables o expresiones booleanas. Esto te permite crear estilos dinámicos y adaptables.

Diagrama de Condicionales

¿Por qué usar condicionales?

Las condicionales te ayudan a:

  • Aplicar diferentes estilos según el valor de una variable (ej., tema claro u oscuro).

  • Crear estilos basados en breakpoints o características del dispositivo.

  • Definir estilos alternativos para diferentes estados (ej., activo, inactivo).

  • Implementar lógica de estilo compleja directamente en tu CSS.

Condicionales en Sass (@if, @else if, @else)

Sass proporciona las directivas @if, @else if y @else para controlar qué bloques de estilo se aplican.

Sass (Ejemplo de tema)

$theme: 'dark';

.container {
  padding: 1rem;
  @if $theme == 'dark' {
    background-color: var(--fondo);
    color: var(--texto);
    border: 1px solid var(--card-borde);
  } @else if $theme == 'light' {
    background-color: #f9f9f9;
    color: #333;
    border: 1px solid #ccc;
  } @else {
    background-color: lightblue;
    color: darkblue;
    border: 1px solid blue;
  }
}

Condicionales en Less (if)

Less utiliza la función if() para lograr un comportamiento condicional en la asignación de valores.

Less (Ejemplo de tema)

@theme: 'dark';

.container {
  padding: 1rem;
  background-color: if(@theme == 'dark', @fondo, if(@theme == 'light', #f9f9f9, lightblue));
  color: if(@theme == 'dark', @texto, if(@theme == 'light', #333, darkblue));
  border: 1px solid if(@theme == 'dark', @card-borde, if(@theme == 'light', #ccc, blue));
}

Combinando Condicionales con Operadores

Puedes combinar operadores lógicos (and, or, not en Sass) con condicionales para crear expresiones más complejas.

Sass (Ejemplo con operadores lógicos)

$is-large: true;
$is-dark-theme: true;

.button {
  padding: 1rem 1.5rem;
  color: white;
  @if $is-large and $is-dark-theme {
    background-color: darken(var(--fondo), 20%);
    font-size: 1.2rem;
  } @else if $is-large and not $is-dark-theme {
    background-color: lighten(lightblue, 10%);
    font-size: 1.2rem;
  } @else {
    background-color: var(--azul);
    font-size: 1rem;
  }
}

Consideraciones al Usar Condicionales

  • Utiliza condicionales para adaptar estilos basados en variables semánticas (ej., $theme, $is-mobile).

  • Evita anidar demasiadas condicionales, ya que puede dificultar la lectura del código. Considera usar funciones o mixins para lógica más compleja.

  • Prueba tus estilos en diferentes escenarios para asegurarte de que las condicionales funcionan como esperas.

Conclusión

Las condicionales en los preprocesadores CSS te permiten llevar la lógica directamente a tus estilos, creando componentes más flexibles y adaptables. Al controlar qué estilos se aplican según ciertas condiciones, puedes construir interfaces de usuario más dinámicas y fáciles de mantener.