循环中两个div之间的淡入/淡出
我怎样才能让两个div在两者之间交替淡入/淡出,这样一次只能看到一个? 并使它成为一个永无止境的循环?
提前致谢!!
我知道它应该用.fadeOut和.fadeIn完成 – 但不知道如何让它一遍又一遍地循环。
这是我自己的版本
window.switchIn = function () { $('.red').fadeToggle(function() { $('.blue').fadeToggle(function() { setTimeout(function() {window.switchOut();}, 500); }); }); } window.switchOut = function () { $('.blue').fadeToggle(function() { $('.red').fadeToggle(function() { setTimeout(function() {window.switchIn();}, 500); }); }); } setTimeout(function() {window.switchIn();}, 500)
你的问题的解决方案比简单的fadeToggle
更棘手,因为你不希望DIV同时显示。 关键是将淡入淡出动作链接在一起,因此下一个淡入淡出动作将不会执行,直到前一个淡入淡出动作完成。
从逻辑上讲,你想要:DIV1淡入,DIV1淡出,DIV2淡入,DIV2淡出,重复。
我在下面的解决方案将采用页面上的任意两个元素,并在不显示任何一个元素的情况下振荡其可见性。 iDuration
以毫秒为单位指定每次转换的时间。
工作实例
HTML:
JavaScript的:
function runToggle(iDuration, domFirst,domSecond) { $(domFirst).fadeToggle(iDuration, "linear",function() { $(domFirst).fadeToggle(iDuration, "linear",function() { $(domSecond).fadeToggle(iDuration,"linear",function() { $(domSecond).fadeToggle(iDuration,"linear",function() { setTimeout(function() { runToggle(domFirst,domSecond) ; },50); }); }); }); }); }; runToggle(1000, $('#div1'),$('#div2'));
我使用setTimeout
不是为了计时,而是为了释放JavaScript解释器,这样浏览器可以在这个淡入淡出循环运行时做其他事情。
你好吗,你可以做到这一点。
setInterval() – 以指定的时间间隔一遍又一遍地执行一个函数;
的setInterval(代码,毫秒,朗)
因此,您可以创建一个实现它的function。 一个例子
这必须工作,告诉我,如果没有。
祝好运!