ローラー上にあるように表示されるように回転させたいli要素の垂直リストがあります(スロットマシンのアイコンやコンビネーションロックの数字など)。次のようなものを追加するだけでこれを作成できます。
$('#list li:first').before($('#list li:last'));
問題は、リストの長さが正確に表示される要素の数であり、保持したいのは、最後の要素が下から滑り落ち、同時に上に滑り込んで循環リストの外観を作成することです。長さが表示可能な長さよりも短い場合、リスト要素を複製し、各 li 要素の margin-top プロパティをアニメーション化して下にスライドさせるという考えがありましたが、各リスト要素の複製がありましたが、より良い方法はありますか?
どんな助けでも大歓迎です。
編集: 以下の Alex Ball の応答に基づく回転関数。
function rotate(direction){
var firstElem = $('#list ul li:first');
var lastElem = $('#list ul li:last');
var elemHeight = firstElem.height();
if(direction == 'down') {
firstElem.animate({'marginTop': '+=' + elemHeight + 'px'}, 500, 'linear', function(){
$(this).css({'margin-top':0}).before(lastElem);
});
}
if(direction == 'up') {
firstElem.animate({'marginTop': '-=' + elemHeight + 'px'}, 500, 'linear', function(){
lastElem.after($(this));
$(this).css({'margin-top':0});
});
}
}