Foros del Web » Programando para Internet » Javascript »

Paleta de colores en JS

Estas en el tema de Paleta de colores en JS en el foro de Javascript en Foros del Web. Buen día, soy nuevo en esta comunidad y mi pregunta es porque no he podido encontrar solución en este portal y en Internet. Necesito hacer ...
  #1 (permalink)  
Antiguo 03/02/2015, 08:29
fabipers
Invitado
 
Mensajes: n/a
Puntos:
Pregunta Paleta de colores en JS

Buen día, soy nuevo en esta comunidad y mi pregunta es porque no he podido encontrar solución en este portal y en Internet.

Necesito hacer una paleta de colores que se pueda implementar con 3 deslizadores de tipo range:

R
G
B

y que cuando se mueva cada range se tenga el rango de 0 a 255 que es el predeterminado para los colores de rgb(eso ya lo tengo). la idea es que cuando se mueva el range el valor que quede en cada color se convierta a hexadecimal para luego tomar esos 3 números hexadecimales y convertirlos en una sola cadena para tomar el número final hexadeciamal y asi formar el color en un div aparte.

Tengo lo siguiente para la funcion de convertir los numeros
Código Javascript:
Ver original
  1. function test(d){
  2. var d = document.getElementById("d").value;
  3. return d.ToString(16);
  4. alert("Seleccionó rojo" + d );


el alert lo uso para poder saber si me esta logrando convertir a hexadecimal el primer range que seria el color rojo, cosa que aun no he podido, es por eso que necesito de su ayuda para saber en que estoy fallando al convertir el numero, y luego de eso que propiedad puedo usar para tomar los 3 valores y convertirlos en una cadena completa para luego con la propiedad background color dejar un div con el color que se edita en los range.


Agradezco su ayuda y colaboración muy amables ¡¡
  #2 (permalink)  
Antiguo 04/02/2015, 03:48
Avatar de garciasanchezdani  
Fecha de Ingreso: noviembre-2011
Mensajes: 429
Antigüedad: 12 años, 5 meses
Puntos: 51
Respuesta: Paleta de colores en JS

Hola @fabipers , mira este ejemplo, qué pasada: http://jsfiddle.net/mv6We/2/
Es algo así lo que quieres, ¿no?
Échale un vistazo, y si no entiendes algo te lo explico.

Espero que te sirva.
Saludos, Daniel
__________________
Diseño Web Jaén
  #3 (permalink)  
Antiguo 04/02/2015, 06:42
fabipers
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Paleta de colores en JS

Hola, gracias por responder, mira te envio lo que llevo hasta ahora, este es el archivo de JavaScript:


Código Javascript:
Ver original
  1. window.onload = function(){
  2.     document.getElementById("rojo").addEventListener("change", redcolor);
  3.     document.getElementById("verde").addEventListener("change", greencolor);
  4.     document.getElementById("azul").addEventListener("change", bluecolor);
  5.    
  6.     }
  7. function redcolor(){
  8.     var rojo= document.getElementById("rojo").value;
  9.     var colorrojo = rojo.ToString(16);
  10.     alert("Selecciono rojo" + rojo );
  11.  
  12. }
  13. function greencolor(){
  14.     var verde= document.getElementById("verde").value;
  15.     var colorverde = verde.ToString(16);
  16.     alert("Selecciono verde" + b );
  17.  
  18. }
  19. function bluecolor(){
  20.     var colorazul = document.getElementById("azul").value;
  21.     var colorverde = verde.ToString(16);
  22.     alert("Selecciono azul "+ c);
  23.  
  24. }


Los alert los uso para probar si me esta convirtiendo a hexa, (cosa que no he podido).

Y aca esta el html:


Código HTML:
Ver original
  1. <html lang="es">
  2.     <head meta charset="utf-8">
  3.         <title>Paleta de colores</title>
  4.        
  5.    
  6.     <link href="styles/styles.css" rel="stylesheet" type="text/css">
  7.    
  8. </head>
  9.  
  10.     <h1>Paleta de colores HTML</h1>
  11.     <h2>Mueva los controles para elegir el color deseado</h2>
  12.     <tr>
  13.     <td><input type="range" id="rojo" min="0" max="255" value ="25" name ="redcolor" /> Red.</td>
  14.     </br>
  15.     <td><input type="range" id="verde" min="0" max="255" value ="25" name ="greencolor" /> Green.</td>
  16.     </br>
  17.     <td><input type="range" id="azul" min="0" max="255" value ="25" name ="bluecolor" /> Blue.</td>
  18.     </br>
  19.     <input type="button" value="Hexadecimal" onclick="alert(sCambiaSistema(0777, 16))">
  20.     </br>
  21.    
  22.     </br>
  23.     <div id="capa2">
  24.    
  25.     </div>
  26.     <td>
  27.     <input type="text" readonly ="readonly" value="#00000" />
  28.     </td>
  29.  
  30.     </tr>
  31.     <script src="scripts/funcion.js" language="javascript" type ="text/javascript"> </script>
  32.    
  33. </body>


no se si me hice entender, son 3 deslizadores tipo range y cada uno transforma al div donde se muestra el color, lo que no he podido hacer es convertir cada valor del deslizador tipo range a hexa y es por esta función que sé que esta mal:


Código Javascript:
Ver original
  1. var colorrojo = rojo.ToString(16);


ya teniendo eso resulto puedo modificar el div del color, pero antes debo poder convertir el valor del range a hexa, gracias por la ayuda
  #4 (permalink)  
Antiguo 05/02/2015, 12:03
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 3 meses
Puntos: 206
Respuesta: Paleta de colores en JS

Veo que te has molestado en programar algo, asi que yo me molesto en reorganizarlo un poco lo que mas o menos tienes:

http://jsfiddle.net/marlanga/jufrgchc/

Código Javascript:
Ver original
  1. String.prototype.pad = function( n, p ) {
  2.     var s = '', n = Math.max( 0, n - this.length );
  3.     while( n-- ) {
  4.         s = p.toString() + s;
  5.     }
  6.     return s + this;
  7. };
  8. var ColorPicker = {
  9.     elementos : {
  10.         r : null,
  11.         g : null,
  12.         b : null,
  13.         input : null,
  14.         color : null
  15.     },
  16.     funciones : {
  17.         cargar : function() {
  18.             ColorPicker.elementos.r = document.getElementById( "rojo" );
  19.             ColorPicker.elementos.g = document.getElementById( "verde" );
  20.             ColorPicker.elementos.b = document.getElementById( "azul" );
  21.             ColorPicker.elementos.input = document.getElementById( "resultado" );
  22.             ColorPicker.elementos.color = document.getElementById( "color" );
  23.            
  24.             ColorPicker.elementos.r.addEventListener( 'input', ColorPicker.funciones.change );
  25.             ColorPicker.elementos.g.addEventListener( 'input', ColorPicker.funciones.change );
  26.             ColorPicker.elementos.b.addEventListener( 'input', ColorPicker.funciones.change );
  27.            
  28.             ColorPicker.funciones.change();
  29.         },
  30.         getHex : function( value ) {
  31.             value = parseInt( value );
  32.             return value.toString( 16 ).pad( 2, 0 ).toUpperCase();
  33.         },
  34.         getColor : function() {
  35.             var r = ColorPicker.funciones.getHex( ColorPicker.elementos.r.value );
  36.             var g = ColorPicker.funciones.getHex( ColorPicker.elementos.g.value );
  37.             var b = ColorPicker.funciones.getHex( ColorPicker.elementos.b.value );
  38.             return '#' + r + g + b;
  39.         },
  40.         putColor : function( color ) {
  41.             ColorPicker.elementos.color.style.backgroundColor = color;
  42.             console.log(color);
  43.         },
  44.         change : function() {
  45.             var color = ColorPicker.funciones.getColor();
  46.             ColorPicker.funciones.putColor( color );
  47.             ColorPicker.elementos.input.value = color;
  48.         }
  49.     }
  50. };
  51. window.onload = function(){
  52.     ColorPicker.funciones.cargar();
  53. }

He encapsulado el codigo en un solo objeto, ahora está organizado en una sola variable global, en vez de ser un conjunto de funciones y variables globales desperdigadas por tu script (que pueden provocar colisiones de nombbres con otros scripts que tengas en la misma página).

Para hacer pad (rellenar cadenas con caracteres predeterminados) he modificado el "prototipo" de la clase String de javascript para meterle nueva funcionalidad

Para que funcione el xxx.toString(16), el objeto xxx DEBE SER un número, no un string.

El resto creo que ya lo entenderás al leerlo.

Última edición por marlanga; 05/02/2015 a las 12:10
  #5 (permalink)  
Antiguo 09/02/2015, 08:59
fabipers
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Paleta de colores en JS

Que bien, disculpa spor contestar tarde, me funciono perfecto, en verdad gracias, si era lo que estaba esperando. una vez más gracias a los 2

Etiquetas: colores, funcion, js, paleta, valor
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:39.