5

我的页面上只有一个<img>元素。我src每 7 秒更改一次此图像的属性。

我每 7 秒看到一次新图像,但如果我可以在加载新图像时添加一些淡入淡出或过渡效果会更好。

有些人有简单的脚本吗?

我不需要任何插件。只需要一些线索或几行样本即可。

4

3 回答 3

9

尽管 KaiQing 提到过,您可以在更改图像时使用 jQuery 的回调功能来淡入/淡出图像。这可以这样做: http: //www.jsfiddle.net/bradchristie/HsKpq/1/

$('img').fadeOut('slow',function(){
    $(this).attr('src','/path/to/new_image.png').fadeIn('slow');
});
于 2011-01-31T23:52:18.960 回答
1

您需要使用两个图像:

<img id="backImg" />
<img id="frontImg" />

设置#backImg为像这样落后#frontImg

#backImg
{
    position: absolute;
}

然后,在每 7 秒触发一次的代码中,淡出前面的图像...这将自动执行您的淡入淡出效果,因为后面的图像已经加载到它后面。淡入淡出完成后,将前图的源设置为后图的src,显示出来,并将下一张图预加载到后图中:

function transitionImages(preloadImgUrl)
{
    $("#frontImg").fadeOut("slow", function()
    {
        $("#frontImg").attr("src", $("#backImg").attr("src")).show();
        $("#backImg").attr("src", preloadImgUrl);
    }
}

这一切都假设您的图像大小相同。如果没有,您将希望对 css 进行更详细的处理,并将图像包装在淡出的 div 中。

于 2011-02-01T00:10:40.737 回答
0

你不能只用一张图片来做到这一点。

看一下这个:

    <div id="main_over"></div> 
    <div id="main_img"></div> 
    <div id="himg" style="display:none; clear:both; margin-top:40px;"> 

            <img id="si_15" src="http://website.com/media/uploaded/home_slideshow/53/dummy_image_large_1__large.jpg" alt="dummy_image_large_1" /> 

            <img id="si_16" src="http://website.com/media/uploaded/home_slideshow/53/dummy_image_large_2__large.jpg" alt="dummy_image_large_2" /> 

            <img id="si_17" src="http://website.com/media/uploaded/home_slideshow/53/dummy_image_large_3__large.jpg" alt="dummy_image_large_3" /> 

            <img id="si_18" src="http://website.com/media/uploaded/home_slideshow/53/dummy_image_large_4__large.jpg" alt="dummy_image_large_4" /> 

    </div> 
<style> 
#main_over{position:absolute; z-index:10; width:800px; height:600px; background:#fff; display:block;}
</style> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> 
<script type="text/javascript"> 
$(document).ready(function(){
    var i = 0;
    $('#himg img').each(function(){
        if(i == 0)
        {
            $('#main_over').html('<img src="' + $(this).attr('src') + '" alt="" />');

        }
        if(i == 1)
        {
            $('#main_img').html('<img src="' + $(this).attr('src') + '" alt="" />');
        }
        i ++;

        slide.arr.push($(this).attr('src')); 
    });

    setTimeout(function(){
        if(slide.arr.length < 2)
            slide.fade(0);
        else
            slide.fade(2);
    }, 3000);
});

var slide = {
    arr: Array(),
    fade: function(i)
    {
        $('#main_over').fadeOut("medium");
        setTimeout(function(){slide.next(i);}, 1000);
    },
    next: function(i)
    {
        $('#main_over').html($('#main_img').html());
        $('#main_over').css('display', 'block');

        $('#main_img').html('<img src="' + slide.arr[i] + '" alt="" />');

        i++;
        if(i >= slide.arr.length)
            i = 0;

        setTimeout(function(){slide.fade(i);}, 3000);
    }
}

</script> 
于 2011-01-31T23:44:12.193 回答