我有一个非常简单的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);
});
答案 0 :(得分:8)
你的一个选择器略微偏离:
$('.fadein :first-child')
选择.fadein
下面的第一个孩子的所有元素。这包括p
元素的第一个子元素,即您尝试旋转的图像。
您希望将:first-child
选择器限制为.fadein
下的元素。一种方法是使用child selector:
$('.fadein > :first-child')
答案 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)