Заставить Jquery.ScrollTo работать на основе скорости, а не продолжительности - PullRequest
4 голосов
/ 15 июля 2010

Я создаю горизонтальный сайт (это может быть любой другой сайт с автоматической прокруткой, например, диагональный), в котором используется дочерний элемент $ .Localscroll из плагина Jquery.ScrollTo.

Есть одна большая проблема сэтот плагин;он рассчитывает движение на основе продолжительности.Это означает, что переход со страницы 1 на 2 занимает 2 секунды, но переход со страницы 1 на 10 также занимает 2 секунды, что делает его переход настолько быстрым, что сам переход больше не виден.Я не знаю, сколько будет ссылок, и ссылки будут не в одном и том же меню, а разбросаны по страницам.

Есть ли способ узнать текущую позицию прокрутки (желательно через плагин, чтобыэто кросс-браузер) и использовать хеш (#), чтобы узнать новое значение scrollto, а затем рассчитать продолжительность на основе скорости?

Ответы [ 2 ]

1 голос
/ 15 июля 2010

Вы можете получить значение scrollTop с помощью $("element").scrollTop(). Вы можете сделать некоторые вычисления и установить длительность на основе этого.

0 голосов
/ 04 января 2012

Вы можете сказать, сколько пикселей должно быть перемещено за время. В этом случае 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();
  });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...