Webサイトのスライド/アニメーションページテンプレートを作成しています。
デフォルトでは、ユーザー画面に3ページを表示しています。左側には、前のページの10%が表示されています。画面中央に現在のページを表示しており、右側に次のページの10%が表示されています。
このウェブサイトには、任意のアイテムを選択してページ間を移動できるトップメニューがあります。各アイテムは、このWebサイトの現在の5つのページのいずれかにリンクされており、ページのタイトルに応じて表示されます。
トップメニューの1つの項目をクリックすると、選択したメニュー項目にリンクされた正しいページに到達するまで、ページを左または右にスライド/アニメーション化します。
これが「myLoopright」関数で、sliddingright関数を何度も呼び出すことができます。
function myLoopright ()
{
// create a loop function
setTimeout(function ()
{
sliddingright(page_id_target_right,previous_right_old,previous_right,next_right,pages_numbers,loop);
loopcount++; // increment the counter
if (loopcount <= (difference_pages-1))
{
myLoopright(); // .. again which will trigger another
}
}, 1100) // .. setTimeout()
} // closing myLoop function
そしてこれがスライディングライト機能です
function sliddingright(page_id_target_right,previous_right_old,previous_right,next_right,pages_numbers,loop)
{
duration=1000;
//Update top Menu DOM items
$('ul#navigation #'+page_id_target_right).addClass('active');
$('ul#navigation #'+next_right).addClass('next');
$('ul#navigation #'+pages_numbers).addClass('previous');
//Update DOM pages
previous_right_old=parseInt(pages_numbers-1);
// PREVIOUS TO HIDDEN
$('#content .'+previous_right_old).css({ 'left' : '-73%','background-color' : '#EAEAEA'}).animate({'left' : '-151%'}, duration, easing, function(){$('#content .'+previous_right_old).addClass('hidden')});
// ACTIVE TO PREVIOUS
$('#content .'+pages_numbers).css({ 'margin' : '0 6%', 'left' : '5%', 'right' : '5%'}).animate({'left' : '-73%', 'margin-right' : '0%', 'margin-left' : '0%', 'backgroundColor' : '#EFF0F1' }, duration, easing, function(){$('#content .'+pages_numbers).removeClass('hidden').addClass('previous')});
// NEXT TO ACTIVE
$('#content .'+page_id_target_right).css({ 'left' : '95%','background-color' : '#EAEAEA'}).animate({'left' : '5%', 'margin-right' : '6%', 'margin-left' : '6%', 'backgroundColor' : '#FFFFFF' }, duration, easing, function(){$('#content .'+page_id_target_right).addClass('active').removeClass('hidden');});
// HIDDEN TO NEXT
$('#content .'+next_right).removeClass('hidden').addClass('next').appendTo('#content').css({ 'left' : '173%', 'backgroundColor' : '#EFF0F1'}).animate({'left' : '95%'}, duration);
}
このコードは機能していますが、多くのページをスライドする必要がある場合、スライド効果は流暢ではありません。
そこで、sliddingright関数のすべてのアニメーションが完了したら、「myLoopright」関数を呼び出して、setTimeout関数を削除したいと思います。
私の開発中のコードを見るには、ここに行くことができます:http: //jsfiddle.net/K2xZB/89/
乾杯