多个div之间自动淡入/显示
什么是我可以在我的网页上加载的简单jQuery脚本,它将在三个“盒子”div中的每一个之间自动淡出,并重复? 我希望它显示一个div 5秒,同时隐藏其他两个,然后运行1秒淡入淡出过渡到下一个。
这三个div目前堆叠在一起。
text1 text2 text3
你可以试试这个:
$(document).ready(function () { var allBoxes = $("div.boxes").children("div"); transitionBox(null, allBoxes.first()); }); function transitionBox(from, to) { function next() { var nextTo; if (to.is(":last-child")) { nextTo = to.closest(".boxes").children("div").first(); } else { nextTo = to.next(); } to.fadeIn(500, function () { setTimeout(function () { transitionBox(to, nextTo); }, 5000); }); } if (from) { from.fadeOut(500, next); } else { next(); } }
演示: http : //jsfiddle.net/CYJLA/
我确信它可以清理和/或更有效率,但我只是把它放在一起让它工作。
jQuery Cycle易于设置,可以满足您的要求。
这是一个例子: http : //jsfiddle.net/n1ck/4PvU7/
$('.boxes').cycle({ speed: 1000, // speed of the transition timeout: 5000 // milliseconds between slide transitions (0 to disable auto advance) });
http://jsfiddle.net/Bouillou/UQTY2/52/
text1 text2 text3 jQuery.fn.nextOrFirst = function (selector) { var next = this.next(selector); return (next.length) ? next : this.prevAll(selector).last(); } $(document).ready(function () { $('div.fade-effect').fadeOut(500); var fadeInTime = 1000; var intervaltime = 5000; //First call setTimeout(function () { fadeMe($('div.fade-effect').first()); }, intervaltime); function fadeMe(div) { div.fadeIn(fadeInTime, function () { div.fadeOut(fadeInTime); //Recursive call setTimeout(function () { fadeMe(div.nextOrFirst()); }, intervaltime); }); } });
text1 text2 text3
这是最简单的解决方案之一:
CSS:
.boxes { position:relative; height:332px; width:500px; } .boxes div { position:absolute; left:0; top:0; }
jQuery的:
$('.boxes div:gt(0)').hide(); setInterval(function(){ $('.boxes :first-child').fadeOut().next('div').fadeIn().end().appendTo('.boxes'); }, 3000);
工作演示