使Jquery.ScrollTo基于速度而不是持续时间工作

时间:2010-07-15 06:20:52

标签: javascript jquery scroll scrollto horizontal-scrolling

我正在创建一个水平站点(它也可以是任何其他自动滚动站点,如对角线),它使用来自Jquery.ScrollTo插件的$ .Localscroll子项。

这个插件存在一个大问题;它根据持续时间计算运动。这意味着从第1页到第2页的转换需要2秒,但是从第1页到第10页的转换也需要2秒,这使得它转换得如此之快,转换本身不再可见。我不知道会有多少链接,链接不会在同一个菜单中,而是分散在各个页面上。

有没有办法找出当前的scrollto位置(最好是通过插件,所以它是跨浏览器)并使用散列(#)找出新的scrollto值,然后根据速度计算持续时间?

2 个答案:

答案 0 :(得分:1)

您可以使用$("element").scrollTop()获取scrollTop值。你可以做一些计算并根据它设置时间长度。

答案 1 :(得分:0)

您可以说在一段时间内应移动多少像素。在这种情况下50px / 10ms。

例如:

var scrollOffset = root.scrollTop,
    offset       = element.offsetTop,
    speed        = 50;

function scrollLoop() {

  if (offset >= scrollOffset) {
  return;
  }

  scrollOffset -= speed;

  root.animate({ scrollTop: scrollOffset }, 10, function() {
    scrollLoop();
  });
}