Web トランジションを使用して画像をスライドさせるカルーセル スクリプトを作成しています。
これは、それがどのように機能するかを非常に単純化したフィドルです。 http://jsfiddle.net/tUhZe/6/
各移行の最初に発生するコストのかかる再描画をどのように減らすことができるかについて、誰かが明るいアイデアを持っているかどうか知りたかったのですか?
このカルーセルに 50 個の画像を追加しようとしましたが、パフォーマンスに重大な問題が発生しました。
window.setInterval( function () {
var element = $('#container'),
active = $('.active'),
next = active.next('.slide');
if (!next.length) {
next = element.find('.slide:eq(0)');
}
// Move next image into position, ready to slide
next.addClass('next');
// Slight delay for next image to move into position
window.setTimeout( function () {
// Start moving active image out
active.addClass('prev');
// Start moving next image in
next.addClass('active')
.removeClass('next')
.bind('webkitTransitionEnd', function () {
next.unbind('webkitTransitionEnd');
// Move offscreen
active.removeClass('active prev next');
// Reassign active
active = next;
});
}, 100);
}, 2000);
一言で言えば、これはスクリプトがどのように機能するかです:
- アクティブな画像が表示されます (指定されたクラス「アクティブ」)。他のすべての画像 (クラス「アクティブ」を除く) はオフスクリーンです (上: 9999px)。
- トランジションの準備として、アクティブな画像の横に次の画像が移動されます。
- アクティブな画像クラスと次の画像クラスが変更され、両方が同時に左から右にスライドします。
トランジションの最後に、アクティブな画像が画面外に配置されます。
前もって感謝します。