我正在编写一个脚本,它将动画一组jQuery元素,但我遇到了一些问题。下面是我的要求:所有动画之后 带回调的Jquery/CSS顺序元素动画
- 连续动画完成。回调可在全球范围定义
- 动漫作品上浮动元素与
- 整个解决方案可以被JS/jQuery的/ CSS或组合
这里是我到目前为止得到:http://jsfiddle.net/fmpeyton/cqAws/
HTML
<div class="block">Im a box</div>
<div class="block">me too</div>
<div class="block">and me!</div>
<div class="block">am I?</div>
<div class="block">yes.</div>
<div class="block">Im a box</div>
<div class="block">me too</div>
<div class="block">and me!</div>
<div class="block">am I?</div>
<div class="block">yes.</div>
<div class="block">Im a box</div>
<div class="block">me too</div>
<div class="block">and me!</div>
<div class="block">am I?</div>
<div class="block">yes.</div>
CSS
.block{
float:left;
width:100px;
background: red;
margin: 0 10px;
padding: 10px;
}
.hiddenForAnimation{ opacity:0; margin-top:-20px; }
JS
$(function(){
$('.block').addClass('hiddenForAnimation').each(function(i){
var delay = i * 200,
animationSpeed = 800;
$(this).delay(delay).animate({opacity: '1', marginTop: '0px'
}, animationSpeed, function(){ if(typeof afterPageAnimation === 'function' && i === $(this).length){ setTimeout(afterPageAnimation, delay + animationSpeed);} $(this).removeClass('hiddenForAnimation').attr('style',''); });
});
});
function afterPageAnimation(){ alert('animation is done!'); }
我的问题:
- 有没有更好的方式来重构这个JS脚本是连续的?使用
delay()
是有效的,但不优雅。 - 没有被动画
- 当在一排的最后一个元素完成动画,下一行中第一个元素开始在最右边后直接执行的回调,然后跳转到左边(我怀疑
margin-top
有事)
谢谢!
那么,.hiddenForAnimation {opacity:0;边距:0像素; }将摆脱跳跃。您也可以删除js的边缘设置线 – Huangism