一个简单的jQuery幻灯片,适用于DIV

时间:2011-11-24 07:57:46

标签: javascript jquery slider slideshow

我刚刚发现可以通过jQuery做一个非常简单的幻灯片演示

$(function(){
    $('.fadein img:gt(0)').hide();
    setInterval(function(){$('.fadein :first-child').fadeOut().next('img').fadeIn().end().appendTo('.fadein');}, 3000);
});

<div class="fadein">
<img src="http://farm3.static.flickr.com/2610/4148988872_990b6da667.jpg">
<img src="http://farm3.static.flickr.com/2597/4121218611_040cd7b3f2.jpg">
<img src="http://farm3.static.flickr.com/2531/4121218751_ac8bf49d5d.jpg">
</div>

我想知道如何修改这个简单的代码来为DIV而不是img制作幻灯片效果(fadeIn / fadeOut)。例如,制作

的幻灯片
<div class="fadein">
<div><img src="http://farm3.static.flickr.com/2610/4148988872_990b6da667.jpg">Some text</div>
<div><img src="http://farm3.static.flickr.com/2597/4121218611_040cd7b3f2.jpg">Some text</div>
<div><img src="http://farm3.static.flickr.com/2531/4121218751_ac8bf49d5d.jpg">Some text</div>
</div>

3 个答案:

答案 0 :(得分:4)

我写了一些代码:

$(function(){
    $ds = $('.fadein div');
    $ds.hide().eq(0).show();
    setInterval(function(){
        $ds.filter(':visible').fadeOut(function(){
            var $div = $(this).next('div');
            if ( $div.length == 0 ) {
                $ds.eq(0).fadeIn();
            } else {
                $div.fadeIn();
            }
        });
    }, 3000);
});

您可以在此处找到完整的示例代码:http://jsfiddle.net/h58ng/

答案 1 :(得分:2)

我创建了一个简单的jQuery插件:

DEMO - loop plugin

您只需要为您的元素添加父级,并将元素的CSS设置为position:absolute;display:none;

插件:

(function($){jQuery.fn.loop = function(d,f){var e=this.children();var el=function(i){if(i==e.length)i=0;e.fadeTo(f,0).eq(i).fadeTo(f,1);setTimeout(function(){el(++i);},d);};el(0);};})(jQuery);

// How to use: $('yourElement').loop( delay , fadespeed );
// Ex: $('#myDiv').loop(2500, 400);

答案 2 :(得分:1)

试试这个

$(function(){
    $('.fadein div:gt(0)').hide();
    setInterval(function(){$('.fadein :first-child').fadeOut().next('div').fadeIn().end().appendTo('.fadein');}, 3000);
});