2012-01-11 52 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仍然沒有解決。