2012-01-11 82 views

回答

0

检查此琴:http://jsfiddle.net/z2YWZ/2/

还有一个问题。到达最后时它不会停止。 iScroll使用CSS translate来滚动,我找不到一种方法来获取当前的翻译形式。目前正在寻找解决方案。

UPDATE

iScroll有useTransform选项,使用它我们可以问它不使用翻译,而使用CSS left属性滚动。通过这种方式,我们可以轻松识别是否已达到目的(无论哪种方式)。要使用,只需在启动iScroll时设置useTransform: false即可。

更新2

检查此琴:http://jsfiddle.net/z2YWZ/12/

+0

我检查了你做的演示。除了你提到的点之外,它工作得很好,还有一件我注意到的事情是在mousedown它正在做它的工作,但立即点击并离开(单击),有一些事情需要做,以便只有一个div移动或出去。我有一个固定的div宽度。所以你可以看看那个工作一次。这里有一些不寻常的事情发生在单击上。 – user850234 2012-01-12 05:08:28

+0

如果你看看iscroll源代码,你会看到有一个'useTransform'选项,你可以使用它来让它不使用translate,而是使用CSS left属性进行滚动。通过这种方式,我们可以轻松识别是否已达到目的(无论哪种方式)。 – techfoobar 2012-01-12 10:31:49

+0

我尝试了你建议的方法。有没有办法在滚动期间获得iscroll4的移动功能中当前的左侧位置。最后,我们可以得到左边的值,但是在滚动时如何理解滚动器已经到达终点,并且应该停止,直到我们在iscroll的移动函数中获得滚动的左侧值。 – user850234 2012-01-12 11:04:49

0

可以通过这个解决方案: http://jsfiddle.net/ugeU3/3

HTML:

<div id="click">Element to click on</div> 

JS:

jQuery("#click").bind('mousedown', function(){ 
    intInterval=setInterval(function(){ 
      myScroll.scrollTo(25, 0, 800, true); 
    },30); 
}); 
jQuery("#click").bind('mouseup', function(){ 
    intInterval=window.clearInterval(intInterval); 
}); 

您可以更改时间值来实现你的速度 - 偏好。 我希望它有帮助。

+0

那么,即使这一个有我提到的问题我的答案(不停止在最后)。此外,由于鼠标上移由触发元件本身处理,如果用户误将鼠标移开,则在此之后不能停止滚动。 – techfoobar 2012-01-11 14:24:18

0

我已经修改@techfoobar代码,做这样的事情这两个涡旋汽车无,直到在鼠标按下结束,或缩小移动一个DIV单击。代码片段是:

 var scrolling=false; 
     var scrollTimer=-1; 
     $('#next').bind('mousedown',function() { 
      scrolling = true; 
      scrollTimer = setInterval(function() { 
       scrollDivRight(); 
      }, 100); 
      return false; 
     }); 
     $('#next').bind('mouseup',function() { 
      scrolling = false; 
      clearInterval(scrollTimer); 
      return false; 
     }); 
     $('#next').bind('mouseout',function() { /*For smoother effect and also prevent if any previous delay (eg. 100ms)*/ 
      scrolling = false; 
      clearInterval(scrollTimer); 
      return false; 
     }); 
     scrollDivRight:function(){ 
      if(!scrolling) return false; 
      myScroll.scrollTo(177, 0, 400, true);  
     } 

请建议是否有什么更好的,然后这个。当然在他的回答中提到的问题@techfoobar仍然没有解决。