还有另一种无需暂停滑块即可获得所需效果的方法。这也适用于设置为“幻灯片”的动画。
对于此示例,我们假设每个转换的持续时间为 500 毫秒。相应地使参数适应您的过渡速度。
首先,我们在幻灯片容器上设置一个过渡延迟(flexslider 也通过 CSS3 对其进行动画处理):
.flexslider .slides {
transition-delay: 0.5s;
-webkit-transition-delay: 0.5s
}
诀窍不是使用 flexslider 提供的 '.flex-active-slide' 类来构建过渡,而是使用我们自己的过渡类,只需通过 flexslider 的回调将该类应用于幻灯片元素:
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 声明已经延迟了滑动本身,因此滑出过渡现在将在滑块滑动之前执行。我们可以在“after”回调中将超时时间设置为我们的淡出持续时间+我们的滑动速度,自定义转换类触发的淡入转换将在滑动完成后执行。
要获得更流畅的动画,请尝试缩短 setTimeout 延迟。这将混合滑动和幻灯片过渡动画,这可能会产生一些不错的幻灯片效果。