2011-07-25 42 views
2

我有一個位置是:固定箭頭導航,讓你向左或向右滾動通過經由jquery的若干列和水平地定位錨:滾動到錨和塊y軸

 $('html,body').animate({ 
     scrollLeft: $(target).offset().left 
     }, 800 , function(){window.location.hash = target;}); 

作品完全爲止。

這些列非常窄,它們可能會變得很長,迫使用戶向下滾動。 一旦你向下滾動,你想跳轉到另一列,js繼續滑動動畫,但跳到下一列的頂部。

有沒有辦法阻止運動的y軸? 或告訴腳本只進行水平移動?

在此先感謝!

回答

1

問題是,在完成動畫之後,您將散列設置爲目標。 這將強制瀏覽器跳轉到具有散列ID的元素。你實際上不需要這種行爲,因爲你只需要y軸。

可能會在您的元素末尾添加一個字符串,以便您仍可以定位它,但不是您設置的哈希標記。

scrollLeft: $(target + "_real").offset().left 
     }, 800 , function(){window.location.hash = target;}); 
+0

感謝您的提示。 =)有時候,它很少看到它是如何工作的。 將散列設置爲目標的函數實際上是多餘的。 scrollLeft接受目標並朝它移動。由於它是「scrollLeft」,它已經水平移動而不是垂直移動。 ('html,body')。animate({scrollLeft:$(target).offset()。left { },800); – Schnirkel