texto poner objeto letras las fondo div dinĂ¡micamente con como color cambiar body javascript algorithm colors rgb

poner - Cambiar el tono de un color RGB en javascript



cambiar color texto label javascript (2)

Si no temes a las bibliotecas y unos pocos kb no arruinarán tu proyecto, podrías probar el color sc en lugar de volver a implementar la rueda ...

Aquí hay un jsfiddle que usa sc-color. El quid del código está aquí:

var c = sc_color("#FF0000").hue(40).hex6(); $("#test").css("background-color", c);

Divulgación: soy el autor de sc-color

Similar a esto (cómo aumentar el brillo) Quiero cambiar el tono de un color RGB (Hex).

Diga changeHue("#FF0000", 40) devuelve "#FFAA00"


Aquí está la solución que encontré. Espero que sea útil y pueda ayudar en el futuro. Cualquier mejora o soluciones adicionales son bienvenidas.

Cambiar tonalidad

// Changes the RGB/HEX temporarily to a HSL-Value, modifies that value // and changes it back to RGB/HEX. function changeHue(rgb, degree) { var hsl = rgbToHSL(rgb); hsl.h += degree; if (hsl.h > 360) { hsl.h -= 360; } else if (hsl.h < 0) { hsl.h += 360; } return hslToRGB(hsl); } // exepcts a string and returns an object function rgbToHSL(rgb) { // strip the leading # if it''s there rgb = rgb.replace(/^/s*#|/s*$/g, ''''); // convert 3 char codes --> 6, e.g. `E0F` --> `EE00FF` if(rgb.length == 3){ rgb = rgb.replace(/(.)/g, ''$1$1''); } var r = parseInt(rgb.substr(0, 2), 16) / 255, g = parseInt(rgb.substr(2, 2), 16) / 255, b = parseInt(rgb.substr(4, 2), 16) / 255, cMax = Math.max(r, g, b), cMin = Math.min(r, g, b), delta = cMax - cMin, l = (cMax + cMin) / 2, h = 0, s = 0; if (delta == 0) { h = 0; } else if (cMax == r) { h = 60 * (((g - b) / delta) % 6); } else if (cMax == g) { h = 60 * (((b - r) / delta) + 2); } else { h = 60 * (((r - g) / delta) + 4); } if (delta == 0) { s = 0; } else { s = (delta/(1-Math.abs(2*l - 1))) } return { h: h, s: s, l: l } } // expects an object and returns a string function hslToRGB(hsl) { var h = hsl.h, s = hsl.s, l = hsl.l, c = (1 - Math.abs(2*l - 1)) * s, x = c * ( 1 - Math.abs((h / 60 ) % 2 - 1 )), m = l - c/ 2, r, g, b; if (h < 60) { r = c; g = x; b = 0; } else if (h < 120) { r = x; g = c; b = 0; } else if (h < 180) { r = 0; g = c; b = x; } else if (h < 240) { r = 0; g = x; b = c; } else if (h < 300) { r = x; g = 0; b = c; } else { r = c; g = 0; b = x; } r = normalize_rgb_value(r, m); g = normalize_rgb_value(g, m); b = normalize_rgb_value(b, m); return rgbToHex(r,g,b); } function normalize_rgb_value(color, m) { color = Math.floor((color + m) * 255); if (color < 0) { color = 0; } return color; } function rgbToHex(r, g, b) { return "#" + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1); }

Uso

changeHue("#FF0000", 40) --> returns #ffaa00 changeHue("#D61E1E", 180) --> returns #1ed6d6 changeHue("#2244BB", -80) --> returns #21bb66

Referencias