JSFiddle:Fiddle
它的工作方式如下:
1 - 红色块从上到下滑动
2 - 一旦完成,则红框fadeOut
3 - 然后蓝框淡出
以下是html:
<div class="posRel">
<div class="trans1"></div>
<div class="trans2"></div>
<div class="trans3"></div>
<div class="trans4"></div>
<div class="trans5"></div>
<div class="trans6"></div>
<div class="trans7"></div>
</div>
以下是js:
for (i = 1; i <= 7; i++) {
$('.trans' + i).toggleClass('toggle');
}
setTimeout(function () {
$('.toggle').fadeOut('slow', function () {
$(this).addClass('fSmall1').fadeIn('slow');
});
}, 2000);
项目链接: http://50.87.144.37/~projtest/team/design/EO/page-2.html
链接到JSFiddle
我面临的问题:
对于js / jQuery我很缺乏经验,所以请随意指出任何愚蠢的错误。感谢。
答案 0 :(得分:1)
我会尝试在一次攻击中攻击你的大多数问题,但我怀疑我们可能需要一些来回来完全解决它。
首先,您的淡入/淡出问题与您的动画被解雇的方式有关。你基本上是在每个元素上单独调用淡出然后淡入淡出,但是根据你在要求中描述的功能,你应该在容器上触发一个淡入淡出:
for (i = 1; i <= 7; i++) {
$('.trans' + i).toggleClass('toggle');
}
setTimeout(function () {
$('.posRel').fadeOut('slow', function () {
$('.toggle').addClass('fSmall1');
$('.posRel').fadeIn('slow');
});
}, 2000);
顺利过渡
如果您希望在没有闪烁然后重新进入的情况下获得平滑淡入淡出,则可以使用fadeTo()方法。可以在下面找到一个FadeTo()示例,这将使所有形状都倒下,暂停几分之一秒,然后改变颜色。你可以尝试删除setTimeout,因为fadeTo控制了动画时间,但我已经尽可能接近原始版本了。
for (i = 1; i <= 7; i++) {
$('.trans' + i).toggleClass('toggle');
}
setTimeout(function () {
$('.posRel').fadeTo('slow', 2, function () {$('.toggle').addClass('fSmall1');});
}, 2000);
答案 1 :(得分:1)
如果你正在使用jQueryUI,这将有效:
http://jsfiddle.net/zcYLM/11/(这是更新过的)
这是您问题的一个基本的,精简的示例,但您可以将其应用于您的代码。
JS:
$(document).ready(function() {
$('div[class*=trans]')
.toggleClass('toggle', 2000)
.promise()
.done(function() {
$(this)
.fadeOut(2000)
.promise()
.done(function() {
$(this)
.addClass('blue')
.fadeIn(2000);
});
});
});
CSS:
.posRel {
position:relative;
}
div.posRel > div {
background-color:red;
position:absolute;
top:0px;
width:100px;
height:100px;
}
div.posRel > div.trans1 { left:-50px; }
div.posRel > div.trans1.toggle { left:100px; top:150px; }
div.posRel > div.blue { background-color:blue; }
答案 2 :(得分:1)
我曾使用过fadeto属性,尝试链接。 http://jsfiddle.net/zcYLM/10/
[http://jsfiddle.net/zcYLM/10/][1]
[1]: http://jsfiddle.net/zcYLM/10/