スライダーを一時停止せずに目的の効果を得る別の方法があります。これは、「スライド」に設定されたアニメーションでも機能します。
この例では、各遷移の期間は500ミリ秒であると想定しています。それに応じて、パラメータを遷移速度に合わせて調整します。
まず、スライドコンテナに遷移遅延を設定します(CSS3を介してflexsliderによってアニメーション化されます)。
.flexslider .slides {
transition-delay: 0.5s;
-webkit-transition-delay: 0.5s
}
秘訣は、flexsliderが提供する「.flex-active-slide」クラスを使用してトランジションを構築するのではなく、flexslidersのコールバックを介してそのクラスをスライド要素に適用するだけで独自のトランジションクラスを使用することです。
start: function(slider) {
slider.slides.eq(slider.currentSlide).addClass('flex-active-transition');
},
before: function(slider) {
slider.slides.eq(slider.currentSlide).removeClass('flex-active-transition');
},
after: function(slider) {
setTimeout(function() {
slider.slides.eq(slider.currentSlide).addClass('flex-active-transition');
}, 700);
}
これにより、スライドが行われ、フェードアウトトランジションがアニメーション化され、すべてのスライドの開始前にクラスが削除された後、遅延を伴うトランジションクラス「.flex-active-transition」が追加されます。これで、すべてのCSS3トランジションにこのクラスを使用できます。
スライド自体はCSS宣言によってすでに遅延しているため、スライドアウト遷移はスライダーがスライドする前に実行されるようになりました。「アフター」コールバックのタイムアウトをフェードアウトの期間+スライド速度に設定できます。カスタムトランジションクラスによってトリガーされるフェードイントランジションは、スライドが完了した直後に実行されます。
よりスムーズなアニメーションを得るには、setTimeout遅延を短くしてみてください。これにより、スライドアニメーションとスライドトランジションアニメーションがブレンドされ、いくつかの優れたスライド効果が得られる可能性があります。