jQuery图像淡化序列?

时间:2010-01-10 01:38:55

标签: jquery image sequence fade

我有一个关于jQuery和图像淡入淡出的问题。我有一堆图像,我想在加载页面时将每个图像逐渐淡入完全不透明度。我的HTML代码如下:

<div class='mod'>
   <img src='image-src' alt='' />
   <div class='mod-text'>
   <h2>Title</h2>
   <p>Caption</p></div>
</div>

<div class='mod'>
   <img src='image-src' alt='' />
   <div class='mod-text'>
   <h2>Title 2</h2>
   <p>Caption 2</p></div>
</div>

每个图像都有自己相应的标题和标题,它们一个接一个地显示。我希望先将第一张图像淡入淡出,然后将每张图像淡入淡出。有人有想法吗?我对jQuery有一个非常基本的了解。感谢

3 个答案:

答案 0 :(得分:4)

您需要对动画进行排队,然后在前一个结束时启动每个动画:

<img src="..." />
<img src="..." />
<img src="..." />
<img src="..." />

var animations = new Array();
// queue all
$("img").each(function() {
    animations.push($(this));
});

// start animating
doAnimation(animations.shift());

function doAnimation(image) {
    image.fadeIn("slow", function() {
        // wait until animation is done and recurse if there are more animations
        if(animations.length > 0) doAnimation(animations.shift());
    });
}

答案 1 :(得分:2)

这可能不是您需要自己实现的,请查看jQuery Cycle Plugin

答案 2 :(得分:2)

你也可以通过延迟每个后续图像的效果来依次淡化它们(注意:我正在使用window.load来确保在开始动画之前加载所有图像):

$(window).load(function() {

        var delay = 0;

        $('img').each(function() {
            $(this).delay(delay).fadeIn();
            delay += 150;
        });

    });

这非常适合重叠动画而不是等待每个动画完成。它也可以随机化:

$(window).load(function() {

        var delay = 0;

        $('img').sort(function() { return (Math.round(Math.random()) - 0.5); }).each(function() {
            $(this).delay(delay).fadeIn(600);
            delay += 150;
        });

    });