我在这里发布我的代码,我已经在点击功能上制作了图像 fadIn-fadeOut,但我希望它们以特定的时间间隔自动淡入淡出。那么我该如何实现呢,请帮帮我。
问问题
1019 次
3 回答
0
我前一阵子做过的事情。使用 2 个图像容器(以便您可以从一个图像淡入到另一个图像):
var img2 = true;
var imgChangeDelay = 5;
var currentImg = 2;
var images = [
'mainImg.jpg',
'mainImg_6.jpg',
'mainImg_2.jpg',
'mainImg_3.jpg',
'mainImg_7.jpg',
'mainImg_8.jpg'
];
function switchImages() {
if(img2) {
img2 = false;
$(".rightMainImage").css('background', 'url("/img/mainPhotos/'+images[currentImg]+'") no-repeat');
$(".rightMainImage2").animate({opacity: 0}, 1000, function() {
setTimeout("switchImages();", (imgChangeDelay*1000));
});
} else {
img2 = true;
$(".rightMainImage2").css('background', 'url("/img/mainPhotos/'+images[currentImg]+'") no-repeat');
$(".rightMainImage2").animate({opacity: 1}, 1000, function() {
setTimeout("switchImages();", (imgChangeDelay*1000));
});
}
if(currentImg == (images.length - 1)) {
currentImg = 0;
} else {
currentImg++;
}
}
在 HTML 中:
<div class="rightMainImage">
<div class="rightMainImage2"></div>
</div>
图像容器的样式:
.rightMainImage, .rightMainImage2 {
width: 569px;
float: right;
height: 335px;
background: url("/img/mainPhotos/mainImg.jpg") no-repeat;
position: absolute;
top: 0;
left: 0;
}
并且不要忘记将其添加到页面启动:
$(document).ready(function() {
setTimeout("switchImages();", (imgChangeDelay*1000));
});
祝你好运!
于 2012-10-13T14:02:23.390 回答
0
于 2012-10-13T13:53:49.493 回答
0
在 JQuery 中,您可以使用动画链接和.delay()函数在fadeOut 和fadeIn 之间创建特定时间量的延迟。
一个简单的例子,延迟 1 秒,淡出一个 div,延迟 1 秒,然后再次淡入:
Javascript:
$('#myDiv').delay(1000).fadeOut(300).delay(1000).fadeIn(300);
HTML:
<div id="myDiv" style="background-color: red; width:200px; height:200px;"></div>
Javascript V2:
或者更高级一点,如果我们想在再次淡入之前将 div 的背景颜色更改为黄色。(这与您的情况类似,您想在图像元素再次淡入之前更改图片)
$('#myDiv').delay(1000).fadeOut(300, function() {
$(this).css("background-color","yellow"); // set background to yellow before fading in
}).delay(1000).fadeIn(300);
Javascript V3:
最后,还有一种制作动画循环的方法如下:
function start() {
$('#myDiv').delay(1000)
.fadeOut(300, function() {$(this).css("background-color","yellow");})
.delay(1000)
.fadeIn(300, start);
}
start();
我创建了一个名为 start 的函数,当动画停止时调用它以重新启动它。(当然它也被称为第一次启动它)
.
你的例子:
从您在 jsfiddle 上发布的代码中,类似这样的东西会起作用:(对不起,内联 javascript)
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
var imgsrc = ["images/c1.png", "images/c2.png", "images/c3.png", "images/c4.png", "images/c5.png"];
var imgnum = 0;
function start() {
$('#cfifoimg').delay(1000).fadeOut(300, function() {
imgnum++;
if(imgnum>4) {imgnum=0;}
$(this).attr("src",imgsrc[imgnum]);
}).delay(1000).fadeIn(300, start);
}
start();
});
</script>
</head>
<body>
<div id="cfifo">
<img id="cfifoimg" src="images/c1.png"/>
</div>
</body>
</html>
重要提示:并非所有 JQuery 函数都可以像这样链接 - 请参阅http://api.jquery.com/delay/了解更多信息
于 2012-10-13T15:07:50.360 回答