这是我处理背景图像的 css - 我在样式表的另一部分设置了宽度和高度,所以这不是问题:
#mainphoto.bg1 { background-image:url(../images/site/homepg_img_1.jpg); background-repeat:no-repeat;}
#mainphoto.bg2 { background-image:url(../images/site/homepg_img_2.jpg); background-repeat:no-repeat;}
#mainphoto.bg3 { background-image:url(../images/site/homepg_img_3.jpg); background-repeat:no-repeat;}
#mainphoto.bg4 { background-image:url(../images/site/homepg_img_4.jpg); background-repeat:no-repeat;}
#mainphoto.bg5 { background-image:url(../images/site/homepg_img_5.jpg); background-repeat:no-repeat;}
#mainphoto.bg6 { background-image:url(../images/site/homepg_img_6.jpg); background-repeat:no-repeat;}
我的 HTML 非常基本:
<div id="mainphoto">
<div id="img-controls"></div>
</div>
最后是jquery:
// create slidearray
var slideArray = ["bg1", "bg2", "bg3", "bg4", "bg5", "bg6"];
// add first image to the mainphoto panel
$('#mainphoto').addClass(slideArray[0]);
// add the image navigation
$('#img-controls').append('<ul id="mybg"></ul>');
// get the slidelength
var slideLength = slideArray.length;
// create the loop and stuff
for(i=0; i < slideLength; i++) {
var slideText = i + 1;
$('#mybg').append('<li class="bg'+slideText+'"><a href="#" rel="bg'+slideText+'"><img src="images/site/img-bullets.png" border="0" ></a></li>');
}
$('#mybg li a').bind('click', function(){
var numSlide = $(this).attr('rel');
var img2rem = $('#mainphoto').attr('class');
$('#mainphoto').fadeOut('normal', function(){
$('#mainphoto').addClass(numSlide).fadeIn('slow', function() {
$('#mainphoto').removeClass(img2rem);
});
});
$('#mybg li a').removeClass('active');
$(this).addClass('active');
console.log("numslide: " +numSlide);
console.log("img2rem: " +img2rem);
});
所以我想要它做的是我制作的 css 类之间的交叉淡入淡出效果。但基本上它所做的是初始图像淡出,然后新图像淡入。但我希望这些动画同时发生,创建交叉淡入淡出效果。
我想做的下一件事是让它们自动播放,这样用户就不必单击项目符号来加载下一个图像。我不太确定该怎么做。
我见过的大多数 jquery 滑块都使用图像标签,但我必须将图像用作背景图像,因为我有导航和页面中正在进行的其他事情,这会使使用标签变得复杂。我现在只是有点困惑如何使这种交叉淡入淡出效果发生。非常感谢您提供任何帮助。