Смоделируйте верхнюю прокрутку, используя javascript setInterval & clearInterval - PullRequest
0 голосов
/ 13 января 2012

Я хочу смоделировать прокрутку, перемещая рамку body / html вверх / вверх на произвольную величину. Я знаю jQuery прокрутки или функции анимации, .scroll() и .animate(). Но я решил не использовать его, так как это вызвало конфликт между свойством scrollTop в animate и .scroll() нативной функцией jQuery, когда анимация происходит и все еще продолжается И .scroll вызывается ..

Мой план теперь состоит в том, чтобы просто смоделировать прокрутку, переместив рамку body / html на верх как можно более плавно на какую-либо произвольную величину, а затем STOP (очистить интервал), когда произойдет нативное scroll вызывается).

Я могу остановить анимацию setInterval при вызове .scroll(), но я все еще не могу переместить объект html на верх на величину, которую я хочу, чтобы он "прокрутил" (что означает только мой код частично работает).

Вот что у меня есть:

var scrollTop = //Some arbitrary value
var fakeScroll = setInterval(function(){
      console.log(scrollTop);
      var animObj = $('html,body');
      animObj.top = animObj.offset().top + scrollTop;   
    },500);
    $(document).scroll(function(){
        clearInterval(fakeScroll);
    });

Ценю любые предложения / ответы. Спасибо!

Ответы [ 3 ]

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

Это работает, но я не думаю, что это то, что вы ищете, потому что это не прокрутка страницы - это перемещение содержимого ...

var scrollTop = 1;
var fakeScroll = setInterval(function() {
    console.log(scrollTop);
    var animObj = $('html,body');
    animObj.offset({ top: animObj.offset().top - scrollTop })
}, 500);
$(document).scroll(function() {
    clearInterval(fakeScroll);
});
0 голосов
/ 23 января 2012

Решена эта проблема без использования таймера. Оказывается, что собственное событие прокрутки и анимация jQuery - это два разных события прокрутки. Что я делаю, так это в значительной степени слушаю конкретное событие прокрутки, которое исходит от собственной прокрутки (DOMMousewheel и mousewheel), и затем, когда это происходит, я прекращаю анимацию. Спасибо за ответы, хотя!

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

просто используйте window.scrollTo(0,Y) при изменении значения Y.

...