« # »

Creador de Paletas de colores en JavaScript

Hace mucho tiempo hice un método para el objeto MovieClip de Flash, el cual te creaba una paleta de colores en el lugar indicado de la película (ideal para CMSs entre otras utilidades).

Hoy rascando en el baúl de los recuerdos me he encontrado con el script en la página de proto.layer51.com y ni corto ni perezoso me he decidido a rehacerlo para que funcione en javascript.

El resultado es el siguiente:

Podéis pulsar sobre los colores para que se ejecute la función de retorno (callBack).

El código es muy sencillo, un tiple bucle con tirabuzón y mortal para atrás :P

JavaScript:
  1. var ancho=10;
  2. var alto=10;
  3. var sep=1;
  4. creaPaleta=function(element,callBack){
  5.     var clip,col,top,left;
  6.     var aColors=["00","33","66","99","CC","FF"];
  7.     for(var x=0;x<6;x++){
  8.         for(var y=0;y<6;y++){
  9.             for(var z=0,d=0;z<6;z++,d++){
  10.                 col="#"+aColors[z]+aColors[x]+aColors[y];
  11.  
  12.                 clip=document.createElement("a");
  13.                 clip.href="Color: "+col;
  14.                 clip.funcio=callBack;
  15.                 clip.onclick=function(){
  16.                     this.funcio(this.color);
  17.                     return false;
  18.                 }
  19.                 cs=clip.style;
  20.                 cs.backgroundColor=clip.color=col;
  21.                 top=sep+y*(alto+sep);
  22.                 cs.top=top+"px";
  23.                 left=sep+(z*((sep+ancho)*6))+(x*(ancho+sep));
  24.                 cs.left=left+"px";
  25.                 cs.width=ancho+"px";
  26.                 cs.height=alto+"px";
  27.                 cs.position="absolute";
  28.                 cs.overflow="hidden";
  29.  
  30.                 element.appendChild(clip);
  31.             }
  32.         }
  33.     }
  34.     element.style.position="relative";
  35.     element.style.height=(6*(alto+sep)+1)+"px";
  36.     element.style.width=(6*6*(ancho+sep)+1)+"px";
  37. }
  38. function funcionRetorno(e){alert(e);}
  39. creaPaleta(document.getElementById("paleta"),funcionRetorno);

Los parámetros configurables son:

ancho y alto: para definir el tamaño de los botones
sep: para definir la separación entre botones

Para crear una paleta se tiene que ejecutar la función creaPaleta pasandole dos argumentos:

element: el cual requiere un elemento HTML (si puede ser un DIV mejor :))
callBack: la función que se ejecutará al pulsar sobre del color seleccionado.

La función es MUY escalable, si queréis añadir efectos rollOver y rollOut solo tenéis que añadirlo en donde figura "clip.onclick=function(){" y ahí le podéis pasar cualquier evento válido para javascript.

Oh! que no lo he dicho! es compatible con FF1.0+,IE5.0+,Opera7.0+ y Safari beta 3 windows, si podéis probarlo con otros navegadores y comentarme si va o no me haréis un grato favor :)

¿Que os parece? :P

Comentarios

  1. juan | Enero 20th, 2008 | 9:10 am

    emm
    muy bueno, me pareciera q es lo q necesito sin embargo
    ¿Como se ocupa?
    ¿Que necesito?

    Quizas podrias explicarte mejor, no todos somos buenos en javascript.

    por ejemplo, como hacer que cuando haga click al color aparezca en un textbox html.

    cual es el jpg de la paleta…

    etc…

    gracias

  2. marc | Enero 20th, 2008 | 6:31 pm

    Juan, el tema es que el javascript en cuestión te genera los colores y no hace falta tener un JPG ni nada parecido con los colores.

    Lo que puedes hacer es configurar lo que sería funcionRetorno() para que te introdujese el código devuelto por la paleta de color en el campo de texto que desees.

    Para ocultarl la paleta se tendría que tirar de CSS con algo parecido a “document.getElementById(“paleta”).style.display=’none’”.

    Espero que te sea de ayuda.

    saludos

Deja un comentario

(*: Datos necesarios para dejar un comentario)

Get Adobe Flash playerPlugin by wpburn.com wordpress themes