Попытка реализовать инерцию прокрутки с помощью jQuery - PullRequest
2 голосов
/ 21 апреля 2010

Я пытаюсь добавить некоторую инерцию прокрутки в стиле iPhone к веб-странице, которая будет просматриваться только на iPad.

У меня есть прокрутка, работающая в одном направлении (scrollLeft), но она не работает в другом направлении. Это довольно простая функция

function onTouchEnd(event){
                event.preventDefault();
                inertia = (oldMoveX - touchMoveX);

                // Inertia Stuff
                if( Math.abs(inertia) > 10 ){

                    $("#feedback").html(inertia);

                    $("#container").animate({
                        'scrollLeft': $("#container").scrollLeft() + (inertia * 10)
                    }, inertia * 20);

                }else{

                    $("#feedback").html("No Inertia");

                }

            }

Я связал это с событием "прикосновения" на теле. Intertia - это разница между старой позицией moveX и последней позицией moveX после касания.

Затем я пытаюсь анимировать свойство scrollLeft элемента div, который содержит несколько миниатюр. Как я уже сказал, это работает при прокрутке влево, но не при прокрутке вправо.

Есть идеи?

1 Ответ

4 голосов
/ 02 мая 2010

2-й аргумент "animate (...)" - это продолжительность, которая не должна быть отрицательной.

попробовать:

...
$("#container").animate({
      'scrollLeft': $("#container").scrollLeft() + (inertia * 10)
   }, Math.abs(inertia * 20));
...
...