【问题标题】:Simulate mouse movement on element based on vertical scroll of body基于body的垂直滚动模拟鼠标在元素上的移动
【发布时间】:2014-02-13 22:51:40
【问题描述】:

我有一个可通过 jQueryUI 拖动的元素。我正在使用它来进行下拉刷新交互。

我想要完成的是当用户滚动到窗口/正文的顶部,但尝试进一步滚动,然后根据用户向上滚动的距离,这个元素(#main)被向下拖动.

我打算如何将它拖下来是通过模拟.mousedown().mousemove() 和 `.mouseup() 事件,它们似乎有效(意味着它们触发了拖动)。

这是我认为应该在一些真实/一些伪代码中工作的内容:

$(window).on('scroll', function(){
    if($(this).scrollTop() === 0){

        if(extra movement beyond scrollTop 0){
             $('#main').mousedown();
             //move #main down number of pixels of extra movement / extra scroll up.
             $('#main').mouseup();   
        }
    } 
});

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    您可以通过这样做获得滚动位置:

    if($("body").scrollTop() === 0)
    {
       //do your stuff
    }
    

    scrollTop() 函数返回从页面滚动位置到激活它的元素顶部的 px 数(在上面的示例中 - 在 body 标记上)。

    这是example

    如果您需要获得滚动的增量,您可以找到this SO 有帮助。

    【讨论】:

    • 这回答了问题吗?如果是这样,请接受它:)
    • 不,我知道如何使用 scrollTop,我想学习如何使移动超出 scrollTop === 0。所以当 scrollTop 已经为零并且用户尝试滚动更多时,如何我知道他们想滚动多少?
    • 你可以通过一些黑客行为来做到这一点。您可以创建一个高度为 100 像素的元素(例如),但仅使用其中的 90 像素(通过最初将默认位置设置为 10 像素。然后当用户尝试移动到此 10 像素的顶部时,您将获得此位置。如果您正在尝试实现拉动刷新效果这里是一个链接usehook.com
    • 我听说过钩子,但它不能满足我的需要。我想做一些类似钩子的东西,当用户向上滚动超过 0 时,他们滚动的量就是元素被拖动的量。
    • 试试我在答案中添加的链接。我认为这正是你所需要的。查看有关此主题的其他答案以扩展您的需求。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-21
    相关资源
    最近更新 更多