尝试用jQuery实现滚动惯性

时间:2010-04-21 11:22:29

标签: javascript-events mobile-safari touchscreen

我正在尝试将一些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");

                }

            }

我把它绑在身上的'touchend'事件上。 intertia是触摸结束时旧的moveX位置和最新的moveX位置之间的差异。

然后我尝试为包含一堆缩略图的div的scrollLeft属性设置动画。正如我所说的,当向左滚动时这是有效的,但在向右滚动时则不行。

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

“animate(...)”的第二个参数是持续时间,它不能是负数。

尝试:

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