Почему .animate to scrollTop перескакивает на 0 перед анимацией?

Я играю с прокруткой Parallax, как на этом сайте Nike. Итак, я использовал scrollTop для определения вертикального положения пользователя на странице, а затем корректировка позиций элемента на основе изменений этого значения.

Здесь я округляю значение scrollTop и записываю его. Лог покажу позже.

var distance = 60*(Math.round($(window).scrollTop()/60));
console.log(distance);

Затем, по щелчку, я вызываю эту функцию, которая прокручивается до значения scrollTop, которое я ему передал.

function goTo(n){
    console.log('begin animating');
    $('html,body').animate({scrollTop: n},2000);
}

Вот проблема: верхнее значение прокрутки перед анимацией прыгает на 0.

Итак, я на полпути вниз по странице, и он регистрирует:

begin animating
0
6240
6180
6120
// etc...

То, как я позиционирую материал, зависит от точности значения scrollTop. Итак, мой вопрос:

Как я могу предотвратить скачок значения scrollTop до 0 до завершения анимации?

Дайте мне знать, если потребуется дополнительная информация.
Вот действующая версия сайта: http://theblueeyeguy.com/moon/Illumination/

(нажмите «Далее», затем «Предыдущий», чтобы сломать его)


person Jim Hall    schedule 29.11.2011    source источник


Ответы (1)


Вероятно, потому что вы используете ссылку с href="#".

Добавьте return false; к вашему атрибуту onclick.

<a href="#" onClick="goTo(2160);return false;">< Prev | </a>
person RightSaidFred    schedule 29.11.2011