首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >超时后自动滚动

超时后自动滚动
EN

Stack Overflow用户
提问于 2013-06-25 22:15:58
回答 1查看 448关注 0票数 2

我有一个id为list的元素,我想要自动滚动到底部,然后连续返回到顶部,但应该停止滚动以允许用户控制滚动。在用户未对元素执行"mousemove mousedown"操作一段时间后,该元素应再次开始自动滚动。

我很难管理超时(自动向下滚动后自动向上滚动)和间隔(继续自动向上和向下滚动)和"mousemove mousedown“事件,并在这些事件发生时停止动画。我的代码乱七八糟。

我向下滚动:

代码语言:javascript
复制
$("#list").animate({
scrollTop : $("#list")[0].scrollHeight
}, timeDown);

向上滚动:

代码语言:javascript
复制
$("#list").animate({
    scrollTop : 0
}, timeUp);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-25 22:27:42

http://jsbin.com/oqadud/3/edit

代码语言:javascript
复制
$list   = $('#list');
$listSH = $list[0].scrollHeight - $list.outerHeight();

function loop(){ 
  var t = $list.scrollTop();
  $list.stop().animate({scrollTop : !t ? $listSH : 0 }, 2000, loop);
}
loop();

$list.on('mouseenter mouseleave', function( e ){
  return e.type=="mouseenter"? $list.stop() : loop();
});

$listSH将返回实际可用的scrollHeight,然后您可以使用animate回调来调用将循环我们的动画的function loop()

loop中,我们只需要获取当前的$list.scrollTop();位置--在鼠标离开或任何其他情况下,这样我们就可以询问ternary operator ( ? : )在布尔值!t (is0==false)动画为$listSH或动画为0的情况下该如何处理。

在DOM就绪时,您可以调用/启动loop()

'mouseenter mouseleave'上,获取事件,然后在一个三元运算符中执行以下操作:

IF event == mouseenter.stop() any动画

ELSE:重启我们的loop()函数(正如我所说的,从当前的scrollTop())。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17299743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档