DevHub Global Solutions | Educativo

Variables CSS (custom properties) para estilos dinámicos

Las variables CSS (custom properties) revolucionan la creación de estilos dinámicos, temas personalizables y sistemas de diseño coherentes. Descubre cómo implementarlas profesionalmente en tus proyectos.
Variables CSS (custom properties) para estilos dinámicos
Ejemplo de tema oscuro/claro usando variables CSS

Fundamentos de las Variables CSS

Sintaxis y características esenciales:

Declaración

--nombre-variable: valor;

Herencia

Variables siguen cascada CSS

Cálculos

calc() con variables: calc(var(--spacing) * 2)

Valores dinámicos

Actualizables con JavaScript

:root {
  /* Variables globales */
  --color-primario: #3498db;
  --spacing-base: 1rem;
  --border-radius: 4px;
  --transition-time: 0.3s;
}

.componente {
  /* Variables locales */
  --componente-bg: #f8f8f8;
  
  /* Usando variables */
  background: var(--componente-bg);
  padding: var(--spacing-base);
  border-radius: var(--border-radius);
  transition: all var(--transition-time) ease;
}

/* Fallback para navegadores antiguos */
.titulo {
  color: var(--color-secundario, #e74c3c); /* Usa #e74c3c si --color-secundario no existe */
}

Temas Dinámicos

Implementación de temas intercambiables:

/* Sistema de temas */
:root {
  --bg-color: #ffffff;
  --text-color: #333333;
  --accent-color: #3498db;
}

[data-theme="dark"] {
  --bg-color: #121212;
  --text-color: #f5f5f5;
  --accent-color: #1abc9c;
}

[data-theme="high-contrast"] {
  --bg-color: #000000;
  --text-color: #ffffff;
  --accent-color: #ffff00;
}

body {
  background: var(--bg-color);
  color: var(--text-color);
}

/* Cambiar tema con JavaScript */
const toggleTheme = () => {
  const currentTheme = document.documentElement.getAttribute('data-theme') || 'light';
  const newTheme = currentTheme === 'light' ? 'dark' : 'light';
  document.documentElement.setAttribute('data-theme', newTheme);
  localStorage.setItem('theme', newTheme);
}

Técnicas Avanzadas

Patrones profesionales con custom properties:

/* Variables para animaciones dinámicas */
:root {
  --animation-speed: 0.4s;
  --animation-easing: cubic-bezier(0.25, 0.1, 0.25, 1);
}

.animated {
  transition: all var(--animation-speed) var(--animation-easing);
}

/* Modificar con JavaScript */
document.documentElement.style.setProperty('--animation-speed', '0.2s');
Técnica Implementación Caso de uso
Responsive @media (max-width: 768px) { :root { --spacing: 0.8rem; } } Espaciado adaptable
Modo oscuro automático @media (prefers-color-scheme: dark) { :root { ... } } Respetar preferencias sistema
CSS-in-JS element.style.setProperty('--x', value) Integración con frameworks
Animaciones dinámicas transition: transform var(--speed, 0.3s); Velocidad configurable
DS

Sobre el autor

Arquitecto CSS en empresa FAANG. Experto en sistemas de diseño escalables y autor de 'CSS Variables in Depth'.