私は自分のコードをここに投稿しています。クリック機能で画像を fadIn-fadeOut にしましたが、特定の時間間隔で自動的にfadeIn-fadeOutしたいです。どうすればそれを達成できますか、助けてください。
3 に答える
少し前にやったこと。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));
});
幸運を!
JQuery では、アニメーション チェーンと.delay()関数を使用して、フェードアウトとフェードインの間に特定の時間の遅延を作成できます。
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/を参照してください。