2011-01-08 4 views
0

c'est un script que j'ai obtenu à partir d'un internet, et ça marche parfaitement, ce qu'il déosque il défile automatiquement sur le mouvement de la souris, sur un div dans ce cas scroll, mais je semble trouver où je peux trouver le vitesse, ou peut le rendre plus lent !! Je suis si confus!!jquery vitesse de défilement?

$("#scroll").mousemove(function(e){ 
     /* The scrollable quote container */ 

     if(!this.hideDiv) 
     { 
      /* These variables are initialised only the firts time the function is run: */ 

      this.hideDiv = $(this); 
      this.scrollDiv = $('#scroll'); 

      this.pos = this.hideDiv.offset(); 
      this.pos.top+=20; 
      /* Adding a 20px offset, so that the scrolling begins 20px from the top */ 


      this.slideHeight = this.scrollDiv.height(); 

      this.height = this.hideDiv.height(); 
      this.height-=20; 
      /* Adding a bottom offset */ 

      this.totScroll = this.slideHeight-this.height; 
     } 

     this.scrollDiv.css({ 
      /* Remember that this.scrollDiv is a jQuery object, as initilised above */ 

      marginTop:'-'+this.totScroll*(Math.max(e.pageY-this.pos.top,0)/this.height)+'px' 
      /* Assigning a negative top margin according to the position of the mouse cursor, passed 
       with e.pageY; It is relative to the page, so we substract the position of the scroll container */ 
     }); 

    }); 

Répondre

0

Le code semble être mise juste la marge directement:

marginTop: '-' + this.totScroll * (Math.max (e.pageY-this.pos.top, 0)/this.height) + 'px'

En d'autres termes, il n'appelle pas de fonction de défilement jquery pouvant facilement être animée. Pour y parvenir, vous devrez faire une réécriture de ce code, en utilisant probablement la fonction jquery animate() avec le cpt de marginTop.

Le seul problème est que le code est appelé sur mousemove, ce qui signifie qu'il pourrait facilement être appelé à nouveau pendant que l'animation est encore active. Donc, vous devrez trouver une solution de contournement, comme peut-être vérifier d'abord s'il y a une animation et l'interrompre dans ce cas.

Questions connexes