我有一些代码,我碰到的是我正在寻找以有效方式在列表项之间循环的代码。我的问题是,我需要他们在'下一个'李可以fadeIn()之前fadeOut()'活跃'锂。使用列表项之间的类循环来衰退动画
我现在已经明显地过渡了,我正在寻找一些更“性感”的东西,这就是为什么我希望它在过渡之间淡化。
我试图战略性地放置设置超时功能,但最终与含有变化的大小通过转换(显然是因为我切换不正确的时间)。
这里是我的代码,我有过渡:
$(function() {
$(".header-featured-blocks").css("padding-top", "0px");
var $lis = $('.header-featured-blocks li');
$cur = $lis.first().addClass('active');
$next = $cur.next().addClass('next');
setInterval(function() {
$cur.removeClass('active');
$cur = $next.removeClass('next').addClass('active');
$next = $cur.next();
if (!$next.length) {
$next = $lis.first();
}
$next.addClass('next');
}, 5000);
});
这里是我试图获得平滑的过渡失败的尝试。希望这会帮助别人试图理解我想要达到的目标。
我的思考过程是:淡出当前的“活动”,等到淡出,然后从元素中删除“活动”类。当发生这种情况时,请将超时设置为500毫秒,而前面提到的操作正在进行,因此直到先前的“活动”已从“活动”类中移除后,“下一个”元素才会变为“活动”。
就像我之前所说的,我的时间是关闭的。而且我知道这一点,因为如果我正确地做到了这一点,转换的li元素不会在它们包含的div中反弹。
$(function() {
var $lis = $('.header-featured-blocks li'),
$cur = $lis.first().addClass('active'),
$next = $cur.next().addClass('next');
setInterval(function() {
$cur.fadeOut(500).delay(500).removeClass('active');
setTimeout(function(){
$cur = $next.removeClass('next').fadeIn(500).addClass('active');
}, 500);
$next = $cur.next();
if (!$next.length) {
$next = $lis.first();
}
$next.addClass('next');
}, 5000);
});
能否请您尝试创建此演示? –