Javascript 如何使滚动像单击滚动条箭头一样真实?

Javascript 如何使滚动像单击滚动条箭头一样真实?,javascript,jquery,html,scroll,onhover,Javascript,Jquery,Html,Scroll,Onhover,我想通过悬停某些元素来模拟滚动条箭头的点击。 基本示例: 功能滚动体(方向、速度){ $('html,body')。设置动画( {'scrollTop':dir+'='+speed+'px'}, {持续时间:300,持续时间:'easeOutQuad'} ); }; $('#top').hover(function(){scrollBody('-','50')}); $('#bottom').hover(函数(){scrollBody(+',50')}); $('#top fast').hov

我想通过悬停某些元素来模拟滚动条箭头的点击。 基本示例:

功能滚动体(方向、速度){
$('html,body')。设置动画(
{'scrollTop':dir+'='+speed+'px'},
{持续时间:300,持续时间:'easeOutQuad'}
);
};
$('#top').hover(function(){scrollBody('-','50')});
$('#bottom').hover(函数(){scrollBody(+',50')});
$('#top fast').hover(函数(){scrollBody('-','150')});
$('#bottom fast').hover(函数(){scrollBody('+','150')})
#内容{宽度:300px}
.卷轴{
位置:固定;
背景颜色:灰色;
颜色:白色;
右:0;
填充物:5px;
宽度:35px;
}
.scroller:悬停{背景色:绿色}
#top{top:35px}
#底部{底部:35px}
#顶部快速{top:0}
#底部快速{bottom:0}

“同一天”是指“同一天”是指“同一天”是指“同一天”是指“同一天”是指“同一天”是指“同一天”是指“同一天”是指“同一天”是指“同一天”是指“同一天”是指“同一天”是指“同一天”或坐或坐或坐或坐或坐或坐或坐或坐或坐或坐或坐或坐或坐或坐或坐或坐或坐或坐或坐或坐或坐或坐或坐或坐或坐或坐无论是坐在同一个位置还是坐在同一个位置或坐在同一个位置或坐在同一个位置或坐在同一个位置或坐在同一个位置或坐在同一个位置或坐在同一个位置或坐在同一个位置或坐在同一个位置或坐在同一个位置或坐在同一个位置或坐在同一个位置或坐在同一个位置或坐在同一个位置“同一天同一天同一天同一天同一天同一天同一天同一天同一天同一天同一天同一天同一天同一天同一天同一天同一天同一天同一天同一天同一天同一天同一天同一天同一天同一天同一天同一天同一天同一天同一天同一天同一天同一天同一天同一天同一天同一天同一天同一天同一天同一天同一天同一天同一天同一天同一天同一天同一天同一天同一天同一天同一天同这句话的意思是:“我不知道,我不知道,我不知道,我不知道,我不知道,我不知道,我不知道,我不知道,我不知道,我不知道,我不知道,我不知道,我不知道,我不知道,我不知道,我不知道,我不知道,我不知道。”或坐或坐或坐或坐或坐或坐或坐或坐或坐或坐或坐
2顶部
2脚架
2T++
2B++

为特定类提供您希望此悬停行为的所有元素。
脏检查鼠标是否位于这些元素上方。
以所需的速度发送相应的点击/激活滚动,或者只要悬停处于活动状态

更新

下面是一个工作片段。除了JS,小提琴没有任何变化。 由于超时,停止滚动会有一点延迟。 相关文件:

var actions;

function scroll(dir, speed){
        $('html, body').animate(
        {'scrollTop': dir+'='+speed+'px'},
        {duration: 300, easing: 'easeOutQuad'}
        );
};

function startScroll(dir, speed){
    actions = setTimeout(function(){
        scroll(dir, speed);
        startScroll(dir, speed);
    }, 300);

};

function endScroll(){
    clearTimeout(actions);    
}
$('#top').hover(function(){startScroll('-', '50')}, endScroll);
$('#bottom').hover(function(){startScroll('+', '50')}, endScroll);
$('#top-fast').hover(function(){startScroll('-', '150')}, endScroll);
$('#bottom-fast').hover(function(){startScroll('+', '150')}, endScroll);
,尤其是鼠标离开时的第二次回调。

,因为我们需要它来关闭滚动并停止无限循环

谢谢,在我的代码片段中,所有元素都有
滚动条
类,我分别为它们分配了一个悬停事件,并相应地设置了动画。你能提供一个你的想法的片段吗?(顺便说一句,抄袭我的,我很感激:)好的,我来看看小提琴。不过你真的很接近。从本质上说,我是想利用这个机会。因此,您的第一个函数将以给定的方向开始滚动,第二个函数将结束滚动。我得查一下文件以便结算/停止。这有用吗?更新了。虽然不漂亮,但应该会让你走上正轨。请把它清理干净+非常感谢:)非常有创意,从未想过会这样。然而,我仍然想找到一种方法来停止打嗝(暂停和启动)。如果没有人知道答案,我会在以后把答案标记为已接受。打嗝只是因为超时时间过长。试着玩转它们,无限循环的每次迭代都会滚动延迟和距离。(尽管可以公平地假设,随着应用程序变得越来越大,它会再次减速。)