2011-07-25 46 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