在垂直自动滚动和循环垂直自动滚动中防止“跳转”

时间:2012-11-06 18:16:02

标签: javascript css

我的垂直自动滚动似乎在某些点上不规律地停止,我希望有一个平滑的滚动。其次,我希望垂直滚动自动重置(几乎无限循环或暗示它永远不会结束而不仅仅是跳跃)。我将如何实现这一目标?以下是我的代码:http://jsfiddle.net/8KjX8/78/

HTML

<div id="wrapper">
<ul>
    <li><div id='activity_date'>06/11/2012</div></li>
    <li><div id='activity_date'>06/11/2012</div></li>
    <li><div id='activity_date'>06/11/2012</div></li>
    <li><div id='activity_date'>06/11/2012</div></li>
    <li><div id='activity_date'>06/11/2012</div></li>
    <li><div id='activity_date'>06/11/2012</div></li>
</ul>
</div>

CSS

#activity_date {
    background-color: #cc0066;
    color: #FFF;
    width: 80px;
}
#wrapper {
    height: 240px;
    overflow: hidden;
}
#wrapper ul {
    position: relative;
    list-style-type: none;
}
#wrapper li {
    height: 30px;
    line-height: 12px;
    list-style-type: none;
}
​​

JS

(function(){
    var i = 0;

    function Scroll() {
        i++;

        if (i < $('li').length) { // scroll down till we are at the last item
            $('ul').animate({top:'-=30'+'px'}, 1000);
        }
    }

    $(document).ready(function() {
        var timeOut;

        $('ul').hover(
            function(e) { // on hover in, stop the animation
                clearTimeout(timeOut);
            }, 
            function(e) { // on hover out, continue
                timeOut = setInterval(Scroll, 1000);
            }
        );

        timeOut = setInterval(Scroll, 1000); // start the animation at document load

    });

})();
​

提前致谢!

1 个答案:

答案 0 :(得分:1)

动画的速度会自动变化。这称为“缓动”,动画的两个标准选项是摆动和线性。 Swing是默认设置,会导致快速慢速的外观。通过在动画中指定线性,您应该摆脱这个问题:

$('ul').animate({top:'-=30'+'px'}, 1000, 'linear');

无限循环更棘手。您需要做的是将所有内容放在一系列绝对定位的容器中,然后让每个容器向上移动,并设置一个检测功能,告诉容器何时完全离开视野,然后继续将其设置为列表的末尾。