4

谁能推荐一个简单的 jQuery 垂直自动滚动脚本?一个不臃肿的,我只需要它自动启动并li在 div 中滚动 6 个或更多。我尝试了jquery.autoscroll.js但无法让它自动启动。

$.fn.autoscroll.defaults = { 
   start: { 
      step: 50, 
      scroll: true, 
      direction: "down", 
      pauseOnHover: true 
   }, 
   delay: 5000, 
   ffrw: { 
      speed: "fast", 
      step: 100 
   } 
};
4

4 回答 4

17
var div = $('div.autoscrolling');
var scroller = setInterval(function(){
    var pos = div.scrollTop();
    div.scrollTop(++pos);
}, 100)​

工作演示

编辑:

要在 div 滚动到底部时停止滚动,请在上面的末尾添加以下检查function() {}-

if($(this).scrollTop() + $(this).innerHeight() >= this.scrollHeight)
   clearInterval(scroller);
}
于 2012-08-28T17:18:12.993 回答
3

simpleScroll 是一个很酷的插件http://logicbox.net/jquery/simplyscroll/

于 2012-12-20T10:26:19.563 回答
1

出于多种原因,罗宾的回答对我来说并没有完全奏效,所以这里是他的方法的修改和扩展版本:

var div = $('.scrollbit');

$('.scrollbit').bind('scroll mousedown wheel DOMMouseScroll mousewheel keyup', function(evt) {
    if (evt.type === 'DOMMouseScroll' || evt.type === 'keyup' || evt.type === 'mousewheel') {

    }
    if (evt.originalEvent.detail < 0 || (evt.originalEvent.wheelDelta && evt.originalEvent.wheelDelta > 0)) { 
        clearInterval(scrollbit);
    }
    if (evt.originalEvent.detail > 0 || (evt.originalEvent.wheelDelta && evt.originalEvent.wheelDelta < 0)) { 
        clearInterval(scrollbit);
    }
});

var scrollbit = setInterval(function(){
    var pos = div.scrollTop();
    if ((div.scrollTop() + div.innerHeight()) >= div[0].scrollHeight) {
        clearInterval(scrollbit);
    }
    div.scrollTop(pos + 1);
}, 100);

在匿名用户 1248475 的帮助下:

检测用户是否创建了滚动事件

这个答案:

https://stackoverflow.com/a/9392134

希望这对任何希望解决如何使用 jquery 自动滚动 div 并在用户手动滚动时停止问题的人有所帮助。

于 2014-10-07T17:27:17.150 回答
1

github 上的 autoscroll.js 下载有错误的文件。如果你在那里搜索,你可以找到它们。

我在下面的链接中做了一个工作演示,如果你喜欢,你可以从中复制。

github 上的 autoscroll.js

我的工作自动滚动演示

于 2017-06-30T16:41:25.607 回答