Ver Mensaje Individual
  #2 (permalink)  
Antiguo 21/05/2010, 04:59
Avatar de salbatore
salbatore
 
Fecha de Ingreso: abril-2007
Ubicación: Springfield
Mensajes: 1.567
Antigüedad: 17 años, 8 meses
Puntos: 19
Respuesta: FadeIn-FadeOut para borde de input?

Hola Dunnow,

Supongo que no querras usar un framework para hacer la validacion y la futura visualizacion de los errores, jeje... a mi tampoco me gustan mucho... pero bueno te ahorras un curro. De todos modos mira:

Código Javascript:
Ver original
  1. //change color
  2.                     //iniciate
  3.                         function colorFade(id,element,start,end,steps,speed)
  4.                             {
  5.                                 var startrgb,endrgb,er,eg,eb,step,rint,gint,bint,step;
  6.                                 if(document.getElementById(id))
  7.                                     {
  8.                                         var target = document.getElementById(id);
  9.                                     }
  10.                                 else
  11.                                     {
  12.                                         var target = id;
  13.                                     }
  14.                                
  15.                                
  16.                                 steps = steps || 20;
  17.                                 speed = speed || 20;
  18.                                 clearInterval(target.timer);
  19.                                 endrgb = colorConv(end);
  20.                                 er = endrgb[0];
  21.                                 eg = endrgb[1];
  22.                                 eb = endrgb[2];
  23.                                 if(!target.r) {
  24.                                 startrgb = colorConv(start);
  25.                                 r = startrgb[0];
  26.                                 g = startrgb[1];
  27.                                 b = startrgb[2];
  28.                                 target.r = r;
  29.                                 target.g = g;
  30.                                 target.b = b;
  31.                                 }
  32.                                 rint = Math.round(Math.abs(target.r-er)/steps);
  33.                                 gint = Math.round(Math.abs(target.g-eg)/steps);
  34.                                 bint = Math.round(Math.abs(target.b-eb)/steps);
  35.                                 if(rint == 0) { rint = 1 }
  36.                                 if(gint == 0) { gint = 1 }
  37.                                 if(bint == 0) { bint = 1 }
  38.                                 target.step = 1;
  39.                                 target.timer = setInterval( function() { animateColor(id,element,steps,er,eg,eb,rint,gint,bint) }, speed);
  40.                             }
  41.                     // incrementally close the gap between the two colors //
  42.                         function animateColor(id,element,steps,er,eg,eb,rint,gint,bint)
  43.                             {
  44.                                 if(document.getElementById(id))
  45.                                     {
  46.                                         var target = document.getElementById(id);
  47.                                     }
  48.                                 else
  49.                                     {
  50.                                         var target = id;
  51.                                     }
  52.                                
  53.                                 var color;
  54.                                 if(target.step <= steps) {
  55.                                 var r = target.r;
  56.                                 var g = target.g;
  57.                                 var b = target.b;
  58.                                 if(r >= er) {
  59.                                 r = r - rint;
  60.                                 } else {
  61.                                 r = parseInt(r) + parseInt(rint);
  62.                                 }
  63.                                 if(g >= eg) {
  64.                                 g = g - gint;
  65.                                 } else {
  66.                                 g = parseInt(g) + parseInt(gint);
  67.                                 }
  68.                                 if(b >= eb) {
  69.                                 b = b - bint;
  70.                                 } else {
  71.                                 b = parseInt(b) + parseInt(bint);
  72.                                 }
  73.                                 color = 'rgb(' + r + ',' + g + ',' + b + ')';
  74.                                 if(element == 'background') {
  75.                                 target.style.backgroundColor = color;
  76.                                 } else if(element == 'border') {
  77.                                 target.style.borderColor = color;
  78.                                 } else {
  79.                                 target.style.color = color;
  80.                                 }
  81.                                 target.r = r;
  82.                                 target.g = g;
  83.                                 target.b = b;
  84.                                 target.step = target.step + 1;
  85.                                 } else {
  86.                                 clearInterval(target.timer);
  87.                                 color = 'rgb(' + er + ',' + eg + ',' + eb + ')';
  88.                                 if(element == 'background') {
  89.                                 target.style.backgroundColor = color;
  90.                                 } else if(element == 'border') {
  91.                                 target.style.borderColor = color;
  92.                                 } else {
  93.                                 target.style.color = color;
  94.                                 }
  95.                                 }
  96.                             }
  97.                     // convert the color to rgb from hex //
  98.                         function colorConv(color)
  99.                             {
  100.                                 var rgb = [parseInt(color.substring(0,2),16),
  101.                                 parseInt(color.substring(2,4),16),
  102.                                 parseInt(color.substring(4,6),16)];
  103.                                 return rgb;
  104.                             }

Te explico como chuta, primero debes seleccionar el elemento que deseas cambiar, luego el parametro que deseas cambiar, si es background pues el fondo, si es border pues el borde, tu sabras!... jeje. Luego le dices los colores.

Aunque veas mucho codigo... es una tonteria... solo que aunque no lo creas es un rollo morrocotudo hacerlo!.
Código Javascript:
Ver original
  1. colorFade(tu_elemento,'background','ffffff','66FF00');

Realmente llevo un tiempo buscando funciones de este tipo y siempre acabo usando esta, jeje... es perfect!.... ademas tirada de cambiar. Yo le he puesto alguna cosilla mas pero bueno... por ejemplo que no necesite id para los elementos y demas.

Hasta pronto!... siento no poner de donde lo saque... pero es que se me olvido!... si ofendo a su creador... me doy un tiron de orejas!.

Hasta pronto!...

Espero haberte ayudado!.