Hace tiempo puse un mensaje sobre fondos degradados en las FAQs javascript y me han preguntado como elegir los colores, ya que el ejemplo venía con una transición difícil de confugurar, y no sabía responder...
En otro mensaje, otro buen forero (epplestun) mostró una página donde se podían encontrar los colores intermedios de 2 dados, y basándome en esa página, preparé el siguiente script:
Código:
Usando: var colores = transitar(color1, color2, longitud);function decahex(n) { return hexa.charAt(n / 16) + hexa.charAt(n % 16); } function colorHexa(c) { return "#" + decahex(c[0]) + decahex(c[1]) + decahex(c[2]); } function transitar(ini, fin, pasos) { var dato = desglose(ini); var rIni = dato[0]; var gIni = dato[1]; var bIni = dato[2]; var intermedios = new Array(pasos); intermedios[0] = dato; var dato = desglose(fin); intermedios[pasos - 1] = dato; var rFin = dato[0]; var gFin = dato[1]; var bFin = dato[2]; var rMed = (rFin - rIni) / (pasos - 1); var gMed = (gFin - gIni) / (pasos - 1); var bMed = (bFin - bIni) / (pasos - 1); for (var i = 1; i < pasos - 1; i ++) { var rgb = new Array(3); rgb[0] = parseInt(rIni + (rMed * i)); rgb[1] = parseInt(gIni + (gMed * i)); rgb[2] = parseInt(bIni + (bMed * i)); intermedios[i] = rgb; } for (i = 0; i < intermedios.length; i ++) intermedios[i] = colorHexa(intermedios[i]); return intermedios; } function desglose(color) { if (color.length != 6) return "poblema"; else { devolver = new Array(3); devolver[0] = hexadec(color.substr(0, 2)); devolver[1] = hexadec(color.substr(2, 2)); devolver[2] = hexadec(color.substr(4, 2)); } return devolver; } var hexa = "0123456789abcdef"; function hexadec(x) { x = x.toLowerCase(); return parseInt(hexa.indexOf(x.charAt(0))) * 16 + parseInt(hexa.indexOf(x.charAt(1))) }
Se obtiene en la variable colores, un array con todos los colores intermedios entre color1 y color2 (creo que no es necesario explicar el significado de longitud)
Se puede ver un ejemplo en este enlace: http://www.pepemolina.com/mapas/difuminado.html
Saludos