我竭力拿出这一个干净的解决方案:清洁数学的解决方案来遍历圆形转盘
- 转盘有7个项目,所以0 - 6
- 指数3是中间的一个
- 如果例如第二个项目(索引1)被点击,则每个项目需要向右移动2个位置。如果最后一项被点击(索引6),则需要将3个位置移动到左侧。
function centerCarouselOn(index, callback) { var items = $('li', carousel); var middleIdx = Math.floor(items.length/2); var direction = null; var iterCount = 0; if(index === middleIdx) return; if(index > middleIdx) { direction = 'left'; iterCount = (index - middleIdx); } else { direction = 'right'; iterCount = (middleIdx - index); } $('li', carousel).each(function(k, v) { var li = $(v); // Here I need to iterate n places to the left or right // e.g: // direction = left, iterCount = 3 // Then each li by index would need this sequence: // 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 (this one moves to center - index 3) }); }
您可以在这里查看我的方法:http://github.com/mgechev/jqcarousel。这是一个演示:http://carousel.mgechev.com/ –
“然后每个索引都需要这个序列”。为什么是序列? –
因为传送带是不同形状和大小的人,所以有一个默认的动画路径,但是然后每个人也可以覆盖此路径(合并到默认路径)以使其看起来更好。所以为了看起来很好,每个人都必须通过这些路径。 +谢谢@MinkoGechev,我无法解决我需要的更简单,不太通用的解决方案,但仍然是一些漂亮的代码! –