因此,我尝试使用淡入/淡出过渡和加载了 ajax 的图像来构建一个 CSS 滑块。问题是当 ajax 图像出现并且 fade 的 css 过渡效果应该起作用时,它不起作用。但是在第一次加载图像后过渡效果很好(因为我正在检查图像是否存在)。
这是一个小提琴作为例子
这是代码:
<style>
body{ margin:0px; }
#wrapper{
position:relative;
width:1024px;
height:768px;
}
#wrapper img{
position:absolute;
width:;
top:0px;
left:0px;
opacity: 0;
-webkit-transition: all 0.5s;
-moz-transition: all 0.5s;
-o-transition: all 0.5s;
transition: all 0.5s;
}
</style>
<div id="wrapper">
<img class="selected" src="img/photo01.jpg" />
</div>
<script>
var images = [
{image:'img/photo01.jpg', loaded:true},
{image:'img/photo02.jpg', loaded:false},
{image:'img/photo03.jpg', loaded:false},
{image:'img/photo04.jpg', loaded:false},
{image:'img/photo05.jpg', loaded:false}
],
arrIndex = 0,
zIndex = 1,
timer = 1500,
fadeInTime = 500,
timerID,
isLoading = false,
container,
imgPrefix = 'slideImage_',
curSelected = $('#'+imgPrefix+arrIndex);
$(document).ready(function(){
container = $('#wrapper');
timerID = setTimeout(nextImage,timer);
$('img',container).attr('id',imgPrefix + arrIndex);
});
function nextImage(){
if(!isLoading){
arrIndex++;
arrIndex = arrIndex >= images.length ? 0 : arrIndex;
loadImage();
}
}
function prevImage(){
if(!isLoading){
arrIndex--;
arrIndex = arrIndex < 0 ? images.length-1 : arrIndex;
loadImage();
}
}
function loadImage(){
var imgObj = images[arrIndex];
isLoading = true;
zIndex++;
$('img:visible').css('opacity',0);
if(imgObj.loaded){
// $('#'+imgPrefix + arrIndex).hide().css('z-index',zIndex).fadeIn(fadeInTime);
$('#'+imgPrefix + arrIndex).css({'opacity': 1})
setTimer();
} else {
$('<img />')
.load(function(){
// $(this).hide();
container.append(this);
//$(this).fadeIn(fadeInTime);
imgObj.loaded = true;
setTimer();
})
.attr('id', imgPrefix + arrIndex)
.attr('src',imgObj.image)
.css({'opacity': 1});;
}
}
function setTimer(){
isLoading = false;
timerID = setTimeout(nextImage,timer);
}
</script>
希望你能理解