使 Jquery.ScrollTo 根据速度而不是持续时间工作

发布于 2024-09-10 03:34:31 字数 299 浏览 11 评论 0原文

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

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

有没有办法找出当前的滚动到位置(最好通过插件,这样它是跨浏览器的)并使用哈希(#)找出新的滚动到值,然后根据速度计算持续时间?

I'm creating a horizontal site (it could also be any other auto-scrolling site, like diagonal) which uses the $.Localscroll child from the Jquery.ScrollTo plugin.

There's one big problem with this plugin; it calculates movement based on a duration. This means the transition from page 1 to 2 takes up 2 seconds, but a transition from page 1 to 10 also takes up 2 seconds, making it transition so fast, the transition itself isn't really visible anymore. I don't know how many links there will be and the links won't be in the same menu but scattered accross pages.

Is there a way to find out the current scrollto position (preferably via the plugin so it's cross-browser) and use the hash (#) to find out the new scrollto value, then calculate the duration based on speed?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

半衬遮猫 2024-09-17 03:34:31

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

You can get the scrollTop value with $("element").scrollTop(). You could do some calculation and set the timelength based on that.

橙幽之幻 2024-09-17 03:34:31

您可以指定在一段时间内应移动多少像素。在本例中为 50 像素/10 毫秒。

例如。:

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

function scrollLoop() {

  if (offset >= scrollOffset) {
  return;
  }

  scrollOffset -= speed;

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

You can say how many pixels should be moved in a duration. In this case 50px/10ms.

eg.:

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

function scrollLoop() {

  if (offset >= scrollOffset) {
  return;
  }

  scrollOffset -= speed;

  root.animate({ scrollTop: scrollOffset }, 10, function() {
    scrollLoop();
  });
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文