我有2个Divs堆叠在一起。
我需要一个非常简单的功能:
a)等待3秒然后 b)FadeOut顶部Div显示第二个Div c)再等3秒钟 d)再次淡入顶部Div e)再次回来
有人可以提供任何建议吗?
非常感谢
答案 0 :(得分:10)
这是一次尝试。
function foo() {
jQuery("#mydiv").animate({opacity: 1.0}, {duration: 3000})
.animate({opacity: 0}, {duration: 3000})
.animate({opacity: 0}, {duration: 3000})
.animate({opacity: 1.0}, {duration: 3000, complete: foo})
}
注意:要暂停,只需在具有相同目标值的属性上调用动画即可。最后一个动画调用与回调相同的功能。
PS:是否会导致堆栈溢出?
答案 1 :(得分:2)
如果两个div的id为“id1”和“id2”,而id2是上一个,则代码如下:
function fadeIn() {
$("id2").animate({opacity:0},500);
setTimeout(fadeOut,3500);
}
function fadeOut() {
$("id2").animate({opacity:1},500);
setTimeout(fadeIn,3500);
}
function startAnim() {
setTimeout(fadeIn,3000);
}
startAnim()启动动画循环,您应该调用@ start。然后淡出&保持动画id2并为彼此设置超时。延迟为3500,因为您需要3秒的延迟(即3000毫秒),并且需要500秒才能完成上一个动画。这可以使用animate上的回调来完成,但这更麻烦。
答案 2 :(得分:2)
这就是你要找的东西(我想)。它使用了一个无序列表,但您可以将其切换为div,或者只是将div放在列表项中,就像我在下面所做的那样。
这是jQuery ......
$(document).ready(function() {
var j = 0;
var delay = 2000; //millisecond delay between cycles
function cycleThru(){
var jmax = $("ul#cyclelist li").length -1;
$("ul#cyclelist li:eq(" + j + ")")
.animate({"opacity" : "1"} ,400)
.animate({"opacity" : "1"}, delay)
.animate({"opacity" : "0"}, 400, function(){
(j == jmax) ? j=0 : j++;
cycleThru();
});
};
cycleThru();
});
......还有一些起始的css ......
ul#cyclelist {width:200px;border:solid;position:relative;overflow:hidden;height:200px}
ul#cyclelist li {font-size:1.4em;padding:20px;opacity:0;position:absolute}
您已经拥有HTML,但万一需要示例......
<ul id="cyclelist">
<li><div>First Div</div></li>
<li><div>Second Div</div></li>
<li><div>Third Div</div></li>
</ul>
我很乐意为此而感到荣幸,但它直接来自CSS-Tricks http://css-tricks.com/snippets/jquery/cycle-through-a-list/
答案 3 :(得分:1)
没有人会看到这个,但以防万一...
<script>
$(document).ready(function() {
$('#picOne').fadeIn(1000).delay(3000).fadeOut(1000);
$('#picTwo').delay(5000).fadeIn(1000).delay(3000).fadeOut(1000);
});
</script>
这是没有循环它的......
那将是
<script>
$(document).ready(function() {
function animate(){
$('#picOne').fadeIn(1000).delay(3000).fadeOut(1000);
$('#picTwo').delay(5000).fadeIn(1000).delay(3000).fadeOut(1000);
}
animate();
setInterval(animate, 10000);
});
</script>
答案 4 :(得分:0)
此尝试使用来自jquery.com的小型烹饪功能等待。
函数doFading假设顶部div的id为“a4”。
function doFading() {
$("#a4").wait(3000)
.fadeOut("slow")
.wait(3000)
.fadeIn("slow",doFading);
}
$.fn.wait = function(time, type) {
time = time || 1000;
type = type || "fx";
return this.queue(type, function() {
var self = this;
setTimeout(function() {
$(self).dequeue();
}, time);
});
};
答案 5 :(得分:0)
如果您还想拥有xfade。使用floyed的脚本,但进行我使用过的更改。唯一的问题是你想要显示的第一个图像应该是li元素中的第二个
$(document).ready(function() {
var j = 0;
var delay = 5000; //millisecond delay between cycles
function cycleThru(){
var jmax = $("ul#cyclelist li").length -1;
$("ul#cyclelist li:eq(" + j + ")")
.animate({"opacity" : "1"} ,1000)
.animate({"opacity" : "1"}, delay);
$("ul#cyclelist li:eq(" + j + ")").next().animate({"opacity" : "1"} ,1000);
$("ul#cyclelist li:eq(" + j + ")")
.animate({"opacity" : "0"}, 1000, function(){
(j == jmax) ? j=0 : j--;
cycleThru();
});
};
cycleThru();
});
答案 6 :(得分:0)
我知道这已经过时了,但我想我会分享我为完成这件事而做的事情
$(document).ready(function() {
var delay = 500;
$("#mydiv").bind('fadein', function()
{
$(this).fadeOut(1000, function()
{
$(this).delay(delay).trigger('fadeout');
});
});
$("#mydiv").bind('fadeout', function()
{
$(this).fadeIn(1000, function()
{
$(this).delay(delay).trigger('fadein');
});
});
$("#mydiv").fadeIn(1000, function()
{
$(this).trigger("fadein");
});
});
然后在你希望它停止时调用它
$("#mydiv").stop().hide();