如何在 Javascript 中使一组函数在另一组函数之后出现
How do you make one set of functions occur after another set in Javascript?
我目前有一个Javascript块作为我网站的介绍:
$('.welcome').fadeIn(500);
}, 3600)
setTimeout(function() {
$('.welcome').fadeOut(500);
}, 5100)
setTimeout(function() {
$('.quotable').fadeIn(800);
}, 5600)
setTimeout(function() {
$('.quotable').animate({
"margin-top" : 0,
"font-size" : '20px'
}, 2000)
}, 6000)
setTimeout(function() {
$('.quotable').fadeOut(1500);
}, 7000)
我试图让下一个代码块(即主页)在完成后运行:
$('.nav').fadeIn(1500)
$('#background').fadeIn(1500)
setTimeout(function() {
$('#background').fadeOut(1500);
}, 8000)
setTimeout(function() {
$('#background2').fadeIn(1500);
}, 8000)
我尝试进行回调,但没有用。
这是 HTML:
<div class="welcome">welcome to</div>
<div class="quotable">the quotable</div>
<div class = "images">
<div id="background">
<img src="Image1.jpg" alt="">
</div>
<div id="background2">
<img src="Image2.jpg" alt="">
</div>
</div>
<div class = "nav">
<ul>
<li class="left"><a href="#" class="quotes">Quotes</a>
<ul class="menu">
<li id="philosophy"><a href="#">Philosophy</a>
</li>
<li id="love"><a href="#">Love</a>
</li>
</ul>
</li>
<li class="right"><a href="#">About</a></li>
</ul>
</div>
和 CSS:
.welcome {
color: black;
font-family: Copperplate;
position: absolute;
font-size: 60px;
z-index: 3;
}
.quotable {
color: black;
font-family; Copperplate;
position: absolute;
font-size: 60px;
z-index: 4;
}
#background {
position: fixed;
top: -50%;
left: -50%;
width: 200%;
height: 200%;
}
#background img {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: auto;
min-width: 50%;
min-height: 50%;
}
#background2 img {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: auto;
min-width: 50%;
min-height: 50%;
}
.nav {
background: #333;
font-size: 15px;
color: #000000;
margin: 0;
width: 100%;
position:fixed;
bottom: 0;
list-style-type: none;
opacity: 0.75;
padding: 0;
z-index: 150;
}
.nav ul, li, a {
margin: 0;
padding: 0;
z-index: 150;
}
.nav li {
list-style: none;
z-index: 150;
}
ul > li {
float: left;
z-index: 150;
}
.nav ul > li a {
color: #fff;
font-weight: bold;
line-height: 40px;
height:40px;
display:block;
padding:0px 10px;
z-index: 150;
}
.nav a:hover {
background-color: #111;
color: white;
text-decoration: none;
z-index: 150;
}
请帮忙!
您可以使用相对 setTimeout,如下所示:
$(element).fadeOut(1500, function() {
setTimeout(function() {
$(nextElement).fadeOut(500, function() ...
}, 500); //do next animation in .5 seconds
}
或者更好的是,你可以查看 CSS3 动画,甚至是承诺,比如这个问题:如何在不堆叠回调的情况下在 jQuery 中进行动画处理?
您可以将另一个函数传递给在动画之后执行的 jQuery 效果,我认为这比很多嵌套超时更干净。
$("h1").fadeIn('slow', function() {
$("h2").fadeIn("slow", function() {
$("h3").fadeIn("slow");
});
});
https://jsfiddle.net/34nqqjqv/
您还可以将此方法用于 jQuery animate 并传入回调。
与常见做法一样,我建议使用回调或承诺,以便函数在能够运行时立即运行,并且您没有等待下一个触发器的停机时间。我您使用超时,这对于动画和UX非常有用,但是如果您不将超时放在回调中,如果由于任何原因计时关闭,则可能会从一个函数流血到另一个函数。
这是回调方法。
step1(function (value1) {
step2(value1, function(value2) {
step3(value2, function(value3) {
step4(value3, function(value4) {
// Do something with value4
});
});
});
});
这是承诺方法。(要使承诺起作用,您将需要一个像q这样的库)
Q.fcall(promisedStep1)
.then(promisedStep2)
.then(promisedStep3)
.then(promisedStep4)
.then(function (value4) {
// Do something with value4
})
.catch(function (error) {
// Handle any error from all above steps
})
.done();
相关文章:
- 简单的Javascript文本编辑器或一组函数
- 如何使用用户定义的相等函数在Javascript中创建一组用户定义的对象
- 如何在redux模块中创建一个helper类型的函数,从state返回一组经过过滤的只读数据
- 通过jquery.html()将一组数据传递给javascript函数
- 是否可以省略一组中间的 Javascript 函数参数
- 使用异步子例程对一组函数进行计时
- 首先触发一组函数,然后回调到最后一个函数
- 是否有一组限制可用于模拟JavaScript中的函数式编程
- 打字稿函数接受一个或一组对象
- jQuery中的函数来操作一组id
- 我如何创建一个函数来选择一组复选框的子集
- 如何在 Javascript 中使一组函数在另一组函数之后出现
- 如何使用 JavaScript 函数选择和修改一组 html
- Javascript函数,用于记住用户在其先前的访问权限中从一组下拉菜单选项中选择的内容
- javascript/nodejs:在大的、分块的数据集上同步调用一组类似的异步函数会导致内存泄漏
- 如何获得一组js函数在后台运行
- ReactJS组件PropTypes——用一组参数指定一个函数类型
- 使用传递给函数的参数动态地从一组数组中检索值
- 在javascript中使用一组函数作为原型
- 你能从一个字符串数组中创建一组函数吗