Micaela 23 de Diciembre de 2009 a las 09.00
   Imprimir artículo
elWebmaster.com

Mootools: Incorporar scroll horizontal en tu sitio web

mootoolsImaginen que encuentran un genial sitio en el que se utiliza scroll horizontal, es algo creativo, pero desalentador cuando notamos que la rueda de nuestro mouse es completamente obsoleta para navegar por la web.

ScrollSide es un plugin que haciendo hijacking de la rueda del mouse, permite que cuando el usuario mueva la rueda para arriba el sitio haga scroll para la izquierda y cuando la mueva para abajo haga scroll para la derecha. Fantástico ¿Verdad?

El plugin MooTools

  1. /* class begins */
  2. var ScrollSide = new Class({
  3.    
  4.     //implements
  5.     Implements: [Options,Events],
  6.    
  7.     //options
  8.     options: {
  9.         reset: true,
  10.         movement: 75 /*,
  11.         onScrollUp: $empty,
  12.         onScrollDown: $empty
  13.         */
  14.     },
  15.    
  16.     //initialization
  17.     initialize: function(container,options) {
  18.         //set options
  19.         this.setOptions(options);
  20.         this.container = document.id(container);
  21.         if(this.options.reset) { this.container.scrollTo(0,0); }
  22.         this.containerWidth = this.container.getScrollSize().x;
  23.         this.position = this.container.getScroll().x;
  24.         //add the listener
  25.         this.addListeners();
  26.     },
  27.    
  28.     //listen for scrolling
  29.     addListeners: function() {
  30.         /* scroll reset */
  31.         var scrollContainer = (this.container == document.id(document.body) ? window : this.container);
  32.         scrollContainer.addEvent('scroll',function() {
  33.             this.position = this.container.getScroll().x;
  34.         }.bind(this));
  35.         /* mousewheeling */
  36.         this.container.addEvent('mousewheel',function(event) {
  37.             event.stop();
  38.             //scroll down/right
  39.             if(event.wheel <0) {
  40.                 this.fireEvent('onScrollUp',[event]);
  41.                 var pos = this.position + this.options.movement;
  42.                 this.position = (pos <= this.containerWidth ? pos : this.containerWidth);
  43.             }
  44.             //scroll up/left
  45.             else{
  46.                 this.fireEvent('onScrollDown',[event]);
  47.                 var pos = this.position - this.options.movement;
  48.                 this.position = (pos> 0 ? pos : 0);
  49.             }
  50.             this.container.scrollTo(this.position,0);
  51.         }.bind(this));
  52.     }
  53. });

Las opciones para ScrollSide incluyen:

  • reset: (por defecto en true) Programa el container en la posición {x:0,y:0} de forma instantánea.
  • movement: (por defecto en 75) El número de pixeles a los que hay que hacer scroll en cada movimiento del mouse.

Los eventos para ScrollSide incluyen:

  • onScrollUp: Se activa cuando el usuario hace scroll para arriba con la rueda del mouse.
  • onScrollDown: Se activa cuando el usuario hace scroll para abajo con la rueda del mouse.

La implementación:

  1. var ss = new ScrollSide(document.body);

Fácil, simple y rápido. Si has creado un sitio que hace scroll de izquierda a derecha, DEBES incluir este plugin en tu web.

Miren el demo»

Descarguen el plugin»

Fuente: David Walsh Blog


Enviar a Del.icio.us Enviar a Meneame Enviar a Digg Enviar a Fresqui Enviar a Enchilame

Comentarios (2)

  1. Sofia dice:

    Hola, el tool es muy bueno! Pero el scroll horizontal no puede moverse con "la bolita del ratón" o bien con el "touch" de tabletas gráficas.

    En esta web, vemos como funciona un scroll horizontal a través de "bolita ratón", "touch strip de tableta" e incluso con las flechas del teclado!.

    http://www.bluevertigo.com.ar/bluevertigo.htm
    http://www.clholloway.co.za/#third

    Si saben de algún tool en que podamos lograr esa comodidad, les estaré muy agradecida!

    Enorabuena por la información compartida!

    Sofía

  2. Víctor Arráez dice:

    Una aclaración: el código que has puesto primero, el más grande, hay que incluirlo en verdad? y como se implementa?

    No consigo hacer que funcione y cualquier ayuda será agradecida

Deja tu opinión

© 2007 - 2008 elWebmaster.com | Powered by Wordpress | Diseño CSS y XHTML válido. | Algunos íconos basados en FamFamFam Mini
Iniciar sesión