我的垂直自动滚动似乎在某些点上不规律地停止,我希望有一个平滑的滚动。其次,我希望垂直滚动自动重置(几乎无限循环或暗示它永远不会结束而不仅仅是跳跃)。我将如何实现这一目标?以下是我的代码: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
});
})();
提前致谢!
答案 0 :(得分:1)
动画的速度会自动变化。这称为“缓动”,动画的两个标准选项是摆动和线性。 Swing是默认设置,会导致快速慢速的外观。通过在动画中指定线性,您应该摆脱这个问题:
$('ul').animate({top:'-=30'+'px'}, 1000, 'linear');
无限循环更棘手。您需要做的是将所有内容放在一系列绝对定位的容器中,然后让每个容器向上移动,并设置一个检测功能,告诉容器何时完全离开视野,然后继续将其设置为列表的末尾。