Foros del Web » Programando para Internet » Javascript »

[APORTE] Easy Url

Estas en el tema de [APORTE] Easy Url en el foro de Javascript en Foros del Web. Hola, Les traigo un codigo javascript para hacer un efecto de anclaje facilmente. Anda en Firefox (yo lo probe en el 3.0), IE 6 al ...
  #1 (permalink)  
Antiguo 13/06/2009, 21:44
Avatar de pato12  
Fecha de Ingreso: septiembre-2007
Ubicación: Salta
Mensajes: 1.620
Antigüedad: 17 años, 1 mes
Puntos: 101
[APORTE] Easy Url

Hola,
Les traigo un codigo javascript para hacer un efecto de anclaje facilmente.
Anda en Firefox (yo lo probe en el 3.0), IE 6 al 8, Opera (lo probe en la vercion 9.25) y Google Chrome. En todos esos andan bien, pero no puede hacerlo andar en IE 5.
Código javascript:
Ver original
  1. (function(){
  2.     var init=function(){
  3.         var tags=document.getElementsByTagName('*'),doms=[],intervalo=false,timeout=false,time=20; // En este ultimo (time), se define la velocidad.
  4.         for(var i=0;i<tags.length;i++){
  5.             if(tags[i].getAttribute('rel')!=null){
  6.                 if(tags[i].getAttribute('rel')=='easyurl'){
  7.                     doms.push(tags[i]);
  8.                 }
  9.             }
  10.         }
  11.         for(var i=0;i<doms.length;i++){
  12.             doms[i].onclick=function(){
  13.                 var id=this.getAttribute('href').split('#')[1],dom=document.getElementById(id),offsetTop=0,offsetLeft=0,elm=dom;
  14.                 while(elm.offsetParent){
  15.                     offsetLeft+=elm.offsetLeft;
  16.                     offsetTop+=elm.offsetTop;
  17.                     elm=elm.offsetParent;
  18.                 }
  19.                 if(intervalo)clearInterval(intervalo);
  20.                 if(timeout)clearTimeout(timeout);
  21.                 var actT=document.documentElement.scrollTop?document.documentElement.scrollTop:document.body.scrollTop;
  22.                 var actL=document.documentElement.scrollLeft?document.documentElement.scrollLeft:document.body.scrollLeft;
  23.                 time=time>1?time:2;
  24.                 intervalo=setInterval(function(){
  25.                     if(actT==offsetTop&&actL==offsetLeft){clearInterval(intervalo);clearTimeout(timeout);}
  26.                     actT=(actT>offsetTop?Math.floor(actT-((actT-offsetTop)/time)):Math.ceil(actT+((offsetTop-actT)/time)));
  27.                     actL=(actL>offsetLeft?Math.floor(actL-((actL-offsetLeft)/time)):Math.ceil(actL+((offsetLeft-actL)/time)));
  28.                     window.scrollTo(actL,actT);
  29.                 },1);
  30.                 timeout=setTimeout(function(){clearInterval(intervalo);},time*1000); // ESTO ES POR SI SE TRABA, EN UNOS SEGUNDOS LO LIBERAMOS
  31.                 return false;
  32.             };
  33.         }
  34.     };
  35.     if(window.addEventListener){
  36.         window.addEventListener('load',init,false);
  37.     }else if(window.attachEvent){
  38.         var f=function(){init.call(window,window.event);};
  39.         window.attachEvent('onload',f);
  40.         window[init.toString()+'load']=f;
  41.     }else{
  42.         window['onload']=init;
  43.     }
  44. })();
Ese codigo se lo coloca en el heade y para usarlo, se coloca en un atrubuto llamado "rel" se coloca "easyurl" y listo! ejemplo:
Código html:
Ver original
  1. <p><a href="#abajo" id="arriba" rel="easyurl">Abajo</a></p>
  2. <p>&nbsp;</p>
  3. <p>&nbsp;</p>
  4. <p>&nbsp;</p>
  5. <p>&nbsp;</p>
  6. <p>&nbsp;</p>
  7. <p>&nbsp;</p>
  8. <p>&nbsp;</p>
  9. <p>&nbsp;</p>
  10. <p>&nbsp;</p>
  11. <p>&nbsp;</p>
  12. <p>&nbsp;</p>
  13. <p>&nbsp;</p>
  14. <p>&nbsp;</p>
  15. <p>&nbsp;</p>
  16. <p>&nbsp;</p>
  17. <p>&nbsp;</p>
  18. <p>&nbsp;</p>
  19. <p>&nbsp;</p>
  20. <p>&nbsp;</p>
  21. <p>&nbsp;</p>
  22. <p>&nbsp;</p>
  23. <p>&nbsp;</p>
  24. <p><a href="#arriba" id="abajo" rel="easyurl">Arriba</a></p>
  25. <p>&nbsp;</p>
  26. <p>&nbsp;</p>
  27. <p>&nbsp;</p>
  28. <p>&nbsp;</p>
  29. <p>&nbsp;</p>
  30. <p>&nbsp;</p>
  31. <p>&nbsp;</p>
  32. <p>&nbsp;</p>
  33. <p>&nbsp;</p>
  34. <p>&nbsp;</p>
  35. <p>&nbsp;</p>
  36. <p>&nbsp;</p>
  37. <p>&nbsp;</p>
  38. <p>&nbsp;</p>
  39. <p>&nbsp;</p>
  40. <p>&nbsp;</p>
  41. <p>&nbsp;</p>
  42. <p>&nbsp;</p>
  43. <p>&nbsp;</p>
  44. <p>&nbsp;</p>
En el "href" se pone el id el elemento a anclar (con el # al empiezo).
DEMO: http://halfmusic.com/EasyUrlDemo.html
Gracias
Salu2

EDITO: Modifique el codigo para que ande horizontal y verticalmente. La demo esta con el codigo viejo. Solo lo probe en firefox porque no tengo otro.
__________________
Half Music - www.halfmusic.com

Última edición por pato12; 05/07/2010 a las 16:33
  #2 (permalink)  
Antiguo 13/06/2009, 23:00
Avatar de danistrein  
Fecha de Ingreso: septiembre-2008
Ubicación: Salta Capital
Mensajes: 550
Antigüedad: 16 años, 2 meses
Puntos: 9
Respuesta: [APORTE] Easy Url

y que puedo decir pato12 esta buenisimo el efecto suerte!
ahora lo boy a usar para la web que te mostre que estoy aciendo
  #3 (permalink)  
Antiguo 16/06/2009, 07:49
Avatar de colote  
Fecha de Ingreso: julio-2008
Ubicación: Rosario - Santa Fe - Argentina
Mensajes: 729
Antigüedad: 16 años, 4 meses
Puntos: 8
Respuesta: [APORTE] Easy Url

Muy lindo !!!

Saludos, Ricardo !!!
__________________
Mail: [email protected]
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 11:41.