0

我的垂直自动滚动似乎在某些时候不规律地停止,我想要一个平滑的滚动。其次,我希望垂直滚动自动重置(几乎无限循环或暗示它永无止境,而不仅仅是跳跃)。我将如何实现这一目标?到目前为止,这是我的代码: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

    });

})();
​

提前致谢!

4

1 回答 1

1

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

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

无限循环要复杂得多。你要做的就是把你所有的内容放在一系列绝对定位的容器中,然后让它们中的每一个都向上移动,并设置一个检测功能来告诉容器何时完全离开了视野,然后继续将其设置到列表的末尾。

于 2012-11-06T19:09:16.140 回答