GUÍA DE COLORES CSS Y JAVASCRIPT

Cómo Convertir HEX a RGB y RGBA con Opacidad en CSS y JavaScript

Domina las conversiones entre modelos de color: fórmulas matemáticas, funciones en JavaScript para hex de 3, 6 y 8 dígitos y sintaxis moderna de CSS color-mix().

El diseño web y los sistemas de temas para interfaces de usuario requieren con frecuencia convertir códigos hexadecimales estáticos (como #3b82f6) en canales RGB o RGBA para ajustar dinámicamente la opacidad (rgba(59, 130, 246, 0.5)), calcular ratios de contraste WCAG o definir variables CSS. Esta guía detalla las fórmulas matemáticas exactas, funciones en JavaScript sin dependencias, gestión del canal alfa en HEX de 8 dígitos y la sintaxis moderna de CSS.

Interactive Solution Utility

100% Client-Side • Zero Telemetry

Introduce cualquier color HEX a continuación para generar instantáneamente RGB, RGBA con opacidad personalizada, HSL y variables CSS:

Transformación de Color 100% en el Navegador • Conforme a W3C CSS Color 4 • Cero Peticiones de Red
Utilidades de CSS y Diseño
Preajustes Populares de Diseño
vs Blanco (#FFFFFF)
3.68:1
AA Large Only
vs Negro (#000000)
5.71:1
AA Pass

Formatos de Color Convertidos

HEX (6-digit)
#3B82F6
HEX8 (Alpha)
#3B82F6FF
RGB
rgb(59, 130, 246)
RGBA
rgba(59, 130, 246, 1)
HSL
hsl(217, 91%, 60%)
HSLA
hsla(217, 91%, 60%, 1)
HSV / HSB
hsv(217, 76%, 96%)
CMYK (Print)
cmyk(76%, 47%, 0%, 4%)
CSS OKLCH
oklch(62% 0.19 255)

Escala de Tonos y Sombras (Tailwind 50 - 950)

Click any swatch to copy

Armonías de Color

Exportar Snippets de CSS y Código

:root {
  --color-primary: #3B82F6;
  --color-primary-rgb: 59, 130, 246;
  --color-primary-hsl: 217deg 91% 60%;
}

1. Fundamentos Matemáticos: Conversión de HEX a RGB

Los códigos hexadecimales representan los canales rojo, verde y azul en base 16 (0 al F). Cada par de dígitos equivale a un entero de 8 bits entre 0 y 255 (16² - 1 = 255). Para convertir el par `3B` a decimal: `R = (3 × 16¹) + (11 × 16⁰) = 48 + 11 = 59`. Aplicando esta lógica a los tres canales, `#3B82F6` se transforma exactamente en `rgb(59, 130, 246)`.
javascript Code Example
// Conversión manual en JavaScript:
const hex = "3B82F6";
const r = parseInt(hex.slice(0, 2), 16); // 59
const g = parseInt(hex.slice(2, 4), 16); // 130
const b = parseInt(hex.slice(4, 6), 16); // 246
console.log(`rgb(${r}, ${g}, ${b})`);

Descomposición con parseInt en base 16.

2. Función en JavaScript Puro para HEX de 3, 6 y 8 Dígitos

El código en producción debe gestionar formatos abreviados (`#fff`), estándar (`#3b82f6`) y de 8 caracteres con canal alfa (`#3b82f680`). El formato abreviado duplica cada carácter (`#abc` pasa a ser `#aabbcc`).
javascript Code Example
function hexToRgba(hex, overrideAlpha) {
  let clean = hex.replace(/^#/, "").trim();
  if (clean.length === 3) {
    clean = clean.split("").map(c => c + c).join("");
  }
  if (clean.length === 6) {
    const num = parseInt(clean, 16);
    const r = (num >> 16) & 255;
    const g = (num >> 8) & 255;
    const b = num & 255;
    const a = overrideAlpha !== undefined ? overrideAlpha : 1;
    return `rgba(${r}, ${g}, ${b}, ${a})`;
  }
  if (clean.length === 8) {
    const num = parseInt(clean, 16);
    const r = (num >> 24) & 255;
    const g = (num >> 16) & 255;
    const b = (num >> 8) & 255;
    const a = overrideAlpha !== undefined ? overrideAlpha : +(num & 255) / 255;
    return `rgba(${r}, ${g}, ${b}, ${Number(a.toFixed(2))})`;
  }
  throw new Error("Formato HEX inválido");
}

Función binaria optimizada compatible con formatos de 3, 6 y 8 dígitos.

3. Códigos HEX de 8 Dígitos (#RRGGBBAA) y Transparencia

El estándar CSS Color Module Level 4 normalizó los códigos hexadecimales de 8 caracteres. Los últimos dos caracteres determinan la opacidad entre 00 (0% transparente) y FF (100% opaco). Valores alfa frecuentes: - `100%` = `FF` (255) - `80%` = `CC` (204) - `50%` = `80` (128) - `25%` = `40` (64) - `10%` = `1A` (26) - `0%` = `00` (0)

4. Sintaxis Moderna de CSS y color-mix() sin JavaScript

Las especificaciones modernas de CSS permiten sintaxis sin comas (`rgb(59 130 246 / 50%)`). Además, la función nativa `color-mix()` permite aplicar opacidad directamente sobre variables HEX sin convertirlas previamente en JS.
css Code Example
:root {
  --color-primario: #3b82f6;
}

.elemento {
  /* Sintaxis con barra diagonal */
  background: rgb(59 130 246 / 0.5);

  /* Opacidad nativa mediante CSS sin JS */
  border-color: color-mix(in srgb, var(--color-primario) 50%, transparent);
}

Uso de color-mix() en CSS para mezclar colores con transparencia nativa.

5. Conversión de RGB a HSL (Tono, Saturación y Luminosidad)

A diferencia de RGB, que representa intensidades de luz de hardware, HSL refleja la percepción humana del color. Esto facilita enormemente la creación de estados de componentes (hover, active) alterando únicamente el canal de Luminosidad (L).

6. Cálculo de Ratios de Contraste y Accesibilidad WCAG 2.1

Para garantizar la legibilidad en interfaces de usuario, los valores RGB se convierten a luminancia relativa (L). La especificación WCAG 2.1 exige un ratio de contraste mínimo de 4.5:1 para texto normal y de 3:1 para texto grande o elementos gráficos interactivos.

Frequently Asked Questions

¿Cómo convierto un código HEX de 3 dígitos como #f00 a RGB?

Duplica cada dígito para obtener un hex de 6 caracteres (#ff0000). El primer par (ff) corresponde al rojo (255), el segundo al verde (0) y el tercero al azul (0), dando como resultado rgb(255, 0, 0).

¿Qué representan los códigos HEX de 8 caracteres?

Los primeros 6 dígitos corresponden a los canales RGB y los 2 últimos indican el canal alfa de transparencia, desde 00 (0%) hasta FF (100%). Por ejemplo, #00000080 representa negro con 50% de opacidad.

¿Cuál es la sintaxis moderna de CSS para RGB con transparencia?

En CSS Color 4 las comas son opcionales. Puedes escribir rgb(59 130 246 / 50%) o rgb(59 130 246 / 0.5) en lugar del tradicional rgba(59, 130, 246, 0.5).

¿Puedo aplicar opacidad a una variable HEX sin usar JavaScript?

Sí, mediante la función CSS color-mix(): background: color-mix(in srgb, var(--mi-hex) 50%, transparent); sin necesidad de librerías ni conversiones intermedias.

¿Por qué los diseñadores prefieren HSL en lugar de RGB?

Porque permite modular variantes de color (sombras, hover, modo oscuro) simplemente incrementando o reduciendo el canal de Luminosidad (L) sin alterar el tono cromático.

Estándares de Arquitectura Empresarial y Fiabilidad

Garantía de Cero Exfiltración de Datos

Todo el análisis de datos, validación de esquemas y cálculos criptográficos se ejecutan exclusivamente en la memoria RAM volátil del navegador local. No se envían credenciales a pasarelas remotas o registradores externos.

Precisión Determinista y Cumplimiento RFC

Cumplimiento estricto con los estándares RFC 8259, RFC 7519, RFC 4648 e ISO/IEC 18004. Asegura compatibilidad exacta con microservicios en Go, Java, Rust, Node.js y Python sin discrepancias de tipos.

Pruebas Automatizadas de Integración CI/CD

Los hooks de pre-commit validan las cargas útiles localmente con esquemas OpenAPI y JSON estrictos, eliminando errores de sintaxis antes de llegar al entorno de producción.

Aislamiento de Memoria y Seguridad del Navegador

Protegido por contextos de seguridad de navegador estrictos COOP y COEP, impidiendo la inspección de memoria y vulnerabilidades de canal lateral tipo Spectre.