简单的jQuery幻灯片,带有fadein / fadeout

时间:2012-12-22 15:18:50

标签: jquery slideshow fadein

我有一个非常简单的jQuery幻灯片:http://jsfiddle.net/6zA4B/

HTML:

<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>

JavaScript的:

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

它完美无缺,我只想用3个div替换3个img标签(所以我可以在图像下面加一个标题)。如何修改脚本来实现呢?我试过这个,但可能我做错了......

HTML:

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

JavaScript的:

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

http://jsfiddle.net/S4SmM/1/:D

4 个答案:

答案 0 :(得分:8)

你的一个选择器略微偏离:

$('.fadein :first-child')

选择.fadein下面的第一个孩子的所有元素。这包括p元素的第一个子元素,即您尝试旋转的图像。

您希望将:first-child选择器限制为.fadein下的元素。一种方法是使用child selector

$('.fadein > :first-child')

示例: http://jsfiddle.net/S4SmM/4/

答案 1 :(得分:4)

使用以下代码:

HTML:

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

CSS:

.fadein { position:relative; height:332px; width:500px; }
.fadein div {position:absolute;text-align:center;height:100%;}
.fadein p { position:absolute; bottom:0;width:100%;color:white;background-color:rgba(0,0,0,0.6);height:1em;padding-bottom:10px;}​

JS:

$.fn.nextOrFirst = function(selector) {
    var next = this.next(selector);
    return (next.length) ? next : this.prevAll(selector).last();
}

$(function() {
    $('.fadein div:eq(0)').addClass("active");
    $('.fadein div:gt(0)').hide();
    setInterval(function() {
        $('.active:eq(0)').fadeOut().removeClass("active").nextOrFirst('div').addClass("active").fadeIn().end()
    }, 3000);
});​

JsFiddle:http://jsfiddle.net/S4SmM/5/

答案 2 :(得分:0)

我喜欢Andrew Whittaker的回答,但更喜欢使用Fadeout回调给它一些“动画”:

setInterval(function(){$('.fadein > :first-child').fadeOut(1000, function() {
    $(this).next('p').fadeIn(1000).end().appendTo('.fadein');   
})
}, 5000);

答案 3 :(得分:0)

您还可以使用插件jquery-fade-slider

$(selector).fadeSlider()

Link to Github Repo