Foros del Web » Programando para Internet » Jquery »

Paginas Horizontales con jquery

Estas en el tema de Paginas Horizontales con jquery en el foro de Jquery en Foros del Web. hola a todos. He encontrado este codigo para una pagina horizontal $(function() { $('ul.nav a').bind('click',function(event){ var $anchor = $(this); /* if you want to use ...
  #1 (permalink)  
Antiguo 01/03/2012, 15:44
 
Fecha de Ingreso: marzo-2012
Mensajes: 21
Antigüedad: 12 años, 2 meses
Puntos: 0
Paginas Horizontales con jquery

hola a todos.
He encontrado este codigo para una pagina horizontal

$(function() {
$('ul.nav a').bind('click',function(event){
var $anchor = $(this);
/*
if you want to use one of the easing effects:
$('html, body').stop().animate({
scrollLeft: $($anchor.attr('href')).offset().left
}, 1500,'easeInOutExpo');
*/
$('html, body').stop().animate({
scrollLeft: $($anchor.attr('href')).offset().left
}, 1000);
event.preventDefault();
});
});

lo que quisiera saber es en el animate() coloca scrollLeft:----, ese scrollLeft es obligatorio para que funcione el código, es una variable o que es realmente por que no entiendo como funciona dentro de animate(). O mejor si me pueden explicar el código sería maravilloso.

GRACIAS
  #2 (permalink)  
Antiguo 02/03/2012, 05:43
 
Fecha de Ingreso: enero-2012
Ubicación: Santiago de Surco, Lima - Perú
Mensajes: 266
Antigüedad: 12 años, 3 meses
Puntos: 57
Información Respuesta: Paginas Horizontales con jquery

Hola migferpedia77.

Si te has fijado muy bien se trata de dos funciones, solo que una esta comentada. Separándolas quedarían de la siguiente manera:

Esta es la que está comentada: (código 1)
Código Javascript:
Ver original
  1. $(function() {
  2.     $('ul.nav a').bind('click',function(event){
  3.         var $anchor = $(this);
  4.         /*if you want to use one of the easing effects:*/
  5.         $('html, body').stop().animate({
  6.             scrollLeft: $($anchor.attr('href')).offset().left
  7.             }, 1500,'easeInOutExpo');
  8.         event.preventDefault();
  9.     });
  10. });

Y esta es la que está activa o utilizable, por así decirlo. (código 2)
Código Javascript:
Ver original
  1. $(function() {
  2.     $('ul.nav a').bind('click',function(event){
  3.         var $anchor = $(this);
  4.         $('html, body').stop().animate({
  5.             scrollLeft: $($anchor.attr('href')).offset().left
  6.             }, 1000);
  7.         event.preventDefault();
  8.     });
  9. });


La primera (la que corresponde a la función comentada), como podrás leer, traducido: "si desea utilizar uno de los efectos de transición" para lo cual se le envia 'easeInOutExpo' después del la duración para lo cual es necesaria la libreria "jquery.easing.js".

Paso a tomar el código 2function para explicarte cada linea.

linea:2
- ('ul.nav a')
Se aplica un filtro en el selector para poder obtener el elemento <a> que estea en un <ul> con clase "nav"; por ejemplo:

HTML Example
Código HTML:
Ver original
  1. <ul class="nav">
  2.     <li><a href="#1">1</a></li>
  3.     <li><a href="#2">2</a></li>
  4.     <li><a href="#3">3</a></li>
  5. </ul>
en donde se encuentran 2 elementos que cumplen con el filtro.

- .bind('click',function(event)
Al metodo bind() se le pasa como valor el evento 'click', lo que indica que se ejecutará la funcion al hacer Click sobre ese elemento capturado, en esta caso "<a>".
Todos los eventos manejados por jQuery se transmiten al callback mediante el primer argumento de la función anónima que lo ejecuta, en este caso se trata del argumento event que por convención suele usarse la letra "e".

linea:3
-$anchor almacenará lo obtenido en el filtro usando $(this) para indicárselo.

linea:4
- Se le aplicará el método .stop() a lo indicado en el selector en este caso html, body. El método stop detendrá cualquier efecto que se esté realizando, haciendo que si le enviamos un nuevo efecto, este corra tranquilamente.
Seguido a ésto se le aplica el método .animate() es cual se encargará de realizar, como su mismo nombre lo indica, la animacion correspondiente a lo que se le indica en las properties, options.

Se puden animar dos propiedades no-estilo personalizadas, se trata de scrollTop y scroll; para este caso scrollLeft se les debe indicar la ubicación del elemento a donde se debe desplazar; para este caso scrollLeft espera una cantidad, que le indicara en donde se ubica el elemento a donde debe desplazarse.

-> attr('href') devolvera el valor del atributo 'href'
-> offset().left devolvera el valor del offsetwidth

Tomando como ejemplo el HTML Example que escribí mas arriba supongamos que cada uno de los 3 <a> apunta a 3 secciones de la pagina respectivamente y estas secciones tienen un ancho de 100px, haciendo click en el numero 3, aplicando todo junto "$($anchor.attr('href')).offset().left" obtendríamos el valor de 200 (el offsetwidth ) distancia a la cual se encuentra la seccion3 desde el elemento actual de encontrarnos inicialmente en la seccion1; quedando scrollLeft : 200. el siguiente valor que se le pasa a animate es 1000 el cual indica la duración en mili-segundos.

Finalmente, pero no por ello menos importante, .preventDefault() se encarga de cancelar o evitar el comportamiento por defecto del navegador frente a un determinado evento, en este caso dirigir a la ruta de las etiquetas <a>. Como se puede observar en la linea 2 del código javascript se introdujo un argumento, event, y ahora se ejecuta sobre él el método preventDefault().



Para conocer al detalle cada método mencionado, puedes consultar la api de JQuey: http://api.jquery.com/

http://api.jquery.com/event.preventDefault/
http://api.jquery.com/animate/
http://api.jquery.com/offset/
http://api.jquery.com/stop/
http://api.jquery.com/bind/
http://api.jquery.com/attr/

Etiquetas: Ninguno
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 12:50.