【发布时间】:2014-03-05 12:06:21
【问题描述】:
我正在尝试构建一个非常简单的滚动条,如果图像向左无限滚动,则其中的数字。我通过克隆包含缩略图数量的主元素并将其作为同级附加到主容器来做到这一点。我遇到的问题是动画的平滑度,因为我使用 jQuery 的 css() 方法在 setTimeout() 函数中每 10ms 减去 1px。
我实际上有 2 个问题:
setTimeout 和 clearTimeout() 是无限循环的正确方法吗
有没有使用 css() 方法平滑动画的有效方法?使用 animate() 不会矫枉过正吗?
带循环的方法:
scrollContainers : function() {
var self = this;
clearTimeout(self.timeout);
self.timeout = setTimeout(function() {
var firstContainerPosition = self.containers[0].position();
var secondContainerPosition = self.containers[1].position();
if (Math.abs(firstContainerPosition.left) > self.containerWidth) {
$(self.containers[0]).css('left', self.containerWidth);
} else {
$(self.containers[0]).css({ left : firstContainerPosition.left - 1 });
}
if (Math.abs(secondContainerPosition.left) > self.containerWidth) {
$(self.containers[1]).css({ 'left' : self.containerWidth });
} else {
$(self.containers[1]).css({ left : secondContainerPosition.left - 1 });
}
self.scrollContainers();
}, 10);
},
【问题讨论】:
-
嘿,请看stackoverflow.com/questions/22174010/… 最后一个答案有无限旋转 - 不需要超时,只需要动画 + 回调。
-
谢谢@JF - 我不确定这将如何处理需要同时移动的两个容器 - 有什么建议吗?
-
嗨@Spencer Mark,添加了多个 div 动画的答案..
标签: jquery settimeout infinite-loop cleartimeout