1. Fundamentos Matemáticos: Conversión de HEX a RGB
// 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
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
4. Sintaxis Moderna de CSS y color-mix() sin JavaScript
: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.