2014-09-23 137 views
0

我有一個客戶誰想要改變他們的網站的功能,使用戶開始在網站的底部,並向下滾動向上導航。捕捉scrollwheel事件來改變向上/向下向上/向上

所以基本上,我需要一種方法來反轉滾動功能,這樣如果向下滾動,它就會向上滾動,反之亦然。

我做了一些研究,發現這個(How can I determine the direction of a jQuery scroll event?),這給了我什麼,我有以下捕捉滾動事件:

 var lastScrollTop = 0; 
     $(window).scroll(function (event) { 
      var st = $(this).scrollTop(); 
      if (st > lastScrollTop) { 
       // downscroll code 
       alert("DOWN"); 
      } else { 
       // upscroll code 
       alert("UP"); 
      } 
      lastScrollTop = st; 
     }); 

這工作得很好,它標識如果用戶向上或向下滾動。

但我不知道我能做些什麼來:

  1. 停止默認的滾動和
  2. 滾動在另一個方向

任何人都知道我能做些什麼嗎?或者,如果有一種完全不同的方式來使用插件或不同的方法來做到這一點,我可以爲任何事情做好準備。

+0

我很好奇 - 當用戶開始「反向」滾動時,在什麼時候啓用「正常」滾動?在用戶回到頁面頂部之前,您是否會反轉滾動?或者,你是否允許他們在一段時間後再次開始滾動?這是一個奇怪的互動... – Jack 2014-09-23 00:58:17

+0

@JackPattishall - 它永遠不會回到正常的滾動。向下/向上總是向上/向下。是的,我同意奇怪的互動:)我想他們希望出現「你向下滾動,內容向下移動」 – Steven 2014-09-23 01:01:39

+1

啊,我找到了你。對不起,我誤解了你的要求。當你到達頁面底部時,我確實認爲你是反向滾動的!您的初始狀態或起點是頁面的底部?然後,當用戶「向下滾動」時,頁面會向上滾動? – Jack 2014-09-23 01:25:59

回答

1

這裏有一個快速小提琴放在一起:

http://jsfiddle.net/fmwpuu9g/

基本上,你想捕捉的mousewheel事件(或DOMMouseScroll事件),並防止違約。

文檔兩種:

鼠標滾輪:https://developer.mozilla.org/en-US/docs/Web/Events/mousewheel(大多數主流瀏覽器) DOMMouseScroll:https://developer.mozilla.org/en-US/docs/Web/Events/DOMMouseScroll(火狐/壁虎)

不幸的是,你可以看到,它不是一個 「標準」,因此支持ISN沒有保證....

有一點要指出的是,offset10px。雖然這是硬編碼(可能是您的客戶正在尋找的),但這並不理想 - 因爲您預計會出現慣性。此外,這是用禁用「正常」滾動功能的MacBooK Pro進行測試的(滾動向上或向下滾動) - 所以我不確定這是如何影響三角洲的。

最後,如果希望刪除滾動條,則只需抵消容器的top位置。

祝你好運!

+0

這太棒了!正是我在找什麼。我不確定滾動條是否可見或不可見,但我不確定我是否瞭解您通過取消容器頂部位置的建議。我將如何修改? – Steven 2014-09-23 01:52:21

+1

嗨Steven!好人。關於滾動條 - 例如客戶希望你隱藏滾動條。然後你操縱溢出(而不是滾動條) - 所以你偏移了'頂部'的位置。像這樣的東西:http://jsfiddle.net/fmwpuu9g/1/ – Jack 2014-09-23 07:09:51