Foros del Web » Programando para Internet » Javascript »

fade in para varias capas

Estas en el tema de fade in para varias capas en el foro de Javascript en Foros del Web. hola He cogido este script de una página. Mi capa #micapa aparece haciendo fade in pero si clono el script para otras capas con efecto ...
  #1 (permalink)  
Antiguo 14/12/2012, 13:50
 
Fecha de Ingreso: diciembre-2007
Mensajes: 45
Antigüedad: 16 años, 4 meses
Puntos: 0
fade in para varias capas

hola

He cogido este script de una página. Mi capa #micapa aparece haciendo fade in pero si clono el script para otras capas con efecto similar (cambiando micapa por micapa2)sólo me funciona una de ellas, error de bulto, lo sé, pero ¿dónde?


function micapa(){var fade=0,micapa=document.getElementById("micapa").st yle,ms=(micapa.opacity==0)?0:1,pace=setInterval(Fa de,80);function Fade(){if(fade<100){fade+=1;if(ms)micapa.filter="a lpha(opacity="+fade+")";else micapa.opacity=(fade/100)}else clearInterval(pace)}};
window.onload=micapa;
  #2 (permalink)  
Antiguo 14/12/2012, 21:05
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: fade in para varias capas

Tendrías que identificar las capas a las que querés aplicar el efecto y que el id de la capa se pase como variable

Ejemplo:
Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <title>titulo</title>
  5. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  6. <style type="text/css">
  7. /*<![CDATA[*/
  8. #micapa, #micapa2{
  9. opacity: 0;
  10. }
  11. /*]]>*/
  12. <script type="text/javascript">
  13. //<![CDATA[
  14. function entrar(){
  15. var capas = new Array("micapa", "micapa2");
  16. var i;
  17. for(i in capas){
  18. micapa(capas[i]);
  19. }
  20. }
  21. function micapa(lacapa){var fade=0,micapa=document.getElementById(lacapa).style,ms=(micapa.opacity==0)?0:1,pace=setInterval(Fade,80);
  22. function Fade(){if(fade<100){fade+=1;if(ms)micapa.filter="alpha(opacity="+fade+")";else micapa.opacity=(fade/100)}else clearInterval(pace)}};
  23. window.onload=entrar;
  24. //]]>
  25. </head>
  26. <div id="micapa">
  27.     texto
  28. </div>
  29. <div id="micapa2">
  30.     texto 2
  31. </div>
  32. </body>
  33. </html>

Y acostumbrate siempre a usar el highlight del editor para evitar errores en la sintáxis, si te fijas hay varias palabras que se cortan e inutilizan tu código (sty le, Fa de, a lpha)

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #3 (permalink)  
Antiguo 15/12/2012, 00:56
 
Fecha de Ingreso: diciembre-2007
Mensajes: 45
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: fade in para varias capas

Muchas gracias, lo del array es la solución para aplicar el mismo efecto a todas las capas, pero ¿puedo clonar la función para que la temporización sea distinta haciendo varios arrays? unas capas en 80 ms y otras en 200 ms

Esto no funciona:

Código Javascript:
Ver original
  1. function entrar(){
  2.     var capas = new Array("micapa", "micapa2");
  3.     var i;
  4.     for(i in capas){
  5.     micapa(capas[i]);
  6.     }
  7.     }
  8.     function micapa(lacapa){var fade=0,micapa=document.getElementById(lacapa).style,ms=(micapa.opacity==0)?0:1,pace=setInterval(Fade,80);
  9.     function Fade(){if(fade<100){fade+=1;if(ms)micapa.filter="alpha(opacity="+fade+")";else micapa.opacity=(fade/100)}else clearInterval(pace)}};
  10.     window.onload=entrar;
  11.  
  12. function entrarmastarde(){
  13.     var capasmt = new Array("micapa3", "micapa4");
  14.     var i;
  15.     for(i in capasmt){
  16.     micapamt(capasmt[i]);
  17.     }
  18.     }
  19.     function micapamt(lacapamt){var fade=0,micapamt=document.getElementById(lacapamt).style,ms=(micapamt.opacity==0)?0:1,pace=setInterval(Fade,200);
  20.     function Fade(){if(fade<100){fade+=1;if(ms)micapamt.filter="alpha(opacity="+fade+")";else micapamt.opacity=(fade/100)}else clearInterval(pace)}};
  21.     window.onload=entrarmastarde;
  #4 (permalink)  
Antiguo 15/12/2012, 06:12
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: fade in para varias capas

Tu método funcionaría si hicieses esto para iniciar las funciones

Código Javascript:
Ver original
  1. window.onload= function(){
  2.         entrar();
  3.     entrarmastarde();
  4. }

Pero esto me parece más práctico, pasando el tiempo como parámetro, sería más flexible, podrías hacer que sea 20, 200, 50, etc agregando else if a las condiciones

Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <title>FadeIn Capas Múltiples</title>
  5. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  6. <style type="text/css">
  7. /*<![CDATA[*/
  8. #micapa, #micapa2,#micapa3,#micapa4{
  9. opacity: 0;
  10. font-size: 18pt;
  11. width: 100px;
  12. height: 100px;
  13. margin: 5px;
  14. background: lime;
  15. }
  16. /*]]>*/
  17. <script type="text/javascript">
  18. //<![CDATA[
  19. function entrar(){
  20. var capas = new Array("micapa", "micapa2","micapa3","micapa4");
  21. var i;
  22. for(i in capas){
  23. if((capas[i] == "micapa2")||(capas[i] == "micapa4")){
  24. micapa(capas[i],200);
  25. }else{
  26. micapa(capas[i],80);
  27. }
  28. }
  29. }
  30. function micapa(lacapa,tiempo){var fade=0,micapa=document.getElementById(lacapa).style,ms=(micapa.opacity==0)?0:1,pace=setInterval(Fade,tiempo);
  31. function Fade(){if(fade<100){fade+=1;if(ms)micapa.filter="alpha(opacity="+fade+")";else micapa.opacity=(fade/100)}else clearInterval(pace)}};
  32. window.onload=entrar;
  33. //]]>
  34. </head>
  35. <div id="micapa">
  36.     texto
  37. </div>
  38. <div id="micapa2">
  39.     texto 2
  40. </div>
  41. <div id="micapa3">
  42.     texto 3
  43. </div>
  44. <div id="micapa4">
  45.     texto 4
  46. </div>
  47. </body>
  48. </html>

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.

Última edición por emprear; 15/12/2012 a las 06:20
  #5 (permalink)  
Antiguo 16/12/2012, 15:46
 
Fecha de Ingreso: diciembre-2007
Mensajes: 45
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: fade in para varias capas

Muchas gracias, parece una solución bastante más elegante que la otra

Etiquetas: capas, fade, funcion
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 08:04.