【发布时间】:2012-11-02 23:35:43
【问题描述】:
我正在努力为此想出一个干净的解决方案:
- 轮播有 7 个项目,所以 0 - 6。
- 索引 3 是中间的索引
- 例如,如果单击第二个项目(索引 1),则每个项目需要向右移动 2 个位置。如果单击最后一项(索引 6),则需要向左移动 3 个位置。
function centerCarouselOn(index, callback) {
var items = $('li', carousel);
var middleIdx = Math.floor(items.length / 2);
变种方向=空;
var iterCount = 0;
if(index === middleIdx) 返回;
如果(索引> middleIdx){
方向='左';
iterCount = (index - middleIdx);
}
别的 {
方向='右';
iterCount = (middleIdx - 索引);
}
$('li', 轮播).each(function(k, v) {
var li = $(v);
// 这里我需要向左或向右迭代n个地方
// 例如:
// 方向 = 左,iterCount = 3
// 然后每个 li 按索引将需要这个序列:
// 0: 6, 5, 4
// 1: 0, 6, 5
// 2: 1, 0, 6
// 3: 2, 1, 0
// 4: 3, 2, 1
// 5: 4, 3, 1
// 6: 5, 4, 3(这个移动到中心 - 索引 3)
});
}
【问题讨论】:
-
你可以在这里查看我的方法:github.com/mgechev/jqcarousel。这是一个演示:carousel.mgechev.com
-
“那么索引的每个 li 都需要这个序列”。为什么是序列?
-
因为轮播是不同形状和大小的人,所以有一个默认的动画路径,但是每个人也可以覆盖这个路径(合并到默认路径),让它看起来更好。因此,为了看起来不错,每个人都必须通过这些路径。 + 感谢@MinkoGechev,我无法为我的更简单、更通用的解决方案提取所需的内容,但仍然是一些漂亮的代码!
-
所以基本上,在你的例子中,有人点击了第 6 个人,与旋转木马的前 li 相比,它恰好在右边 3 个位置,你想将每个人移动 3 次 1 个位置到左边,右边?
-
@EvrenKuzucuoglu 是的
标签: javascript for-loop carousel