1. Mathematische Grundlagen: Von HEX zu RGB
// Manuelle Zerlegung in 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})`);Zerlegung mit parseInt zur Basis 16.
2. Native JavaScript-Hilfsfunktion für 3-, 6- und 8-stellige Hex-Codes
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("Ungültiges HEX-Format");
}Optimierte bitweise Umwandlung für alle gängigen Hex-Formate.
3. 8-stellige Farbcodes (#RRGGBBAA) und Alpha-Transparenz
4. Moderne CSS-Syntax & color-mix() ohne JavaScript
:root {
--primary-color: #3b82f6;
}
.box {
/* Moderne CSS Color 4 Syntax */
background: rgb(59 130 246 / 0.5);
/* Native Deckkraft via CSS ohne JS */
border-color: color-mix(in srgb, var(--primary-color) 50%, transparent);
}Einsatz von color-mix() in CSS für dynamische Transparenz.