Step.103 - フェード効果のあるスライドショー


Step.65のスライドショーが地味なのでフェード効果をつけてみます。

Step テーマ
なし

実行例


▲TOP

リスト


<style type="text/css">
.fadeout{
opacity: 0;
transition: 3s ease-in-out;
-webkit-transition: 3s ease-in-out;
}
.fadein{
opacity: 1;
transition: 3s ease-in-out;
-webkit-transition: 3s ease-in-out;
}
</style>
<script type="text/javascript"><!--
myImage = new Array(
// 画像ファイル名の設定
"IMG_088.gif",
// 鯉
"IMG_0141.gif",
// 滝
"IMG_0400.gif",
// 石仏
"IMG_0667.gif",
// 橋
"IMG_0679.gif"
// 山
);
myNowCnt = -1;
// 現在表示している配列番号
myflg = 0;
// どっちを表示して、どっちを消すかのフラグ
function myChange(){
// スライドショーメイン関数
myNowCnt = (myNowCnt<myImage.length-1) ? myNowCnt+1 : 0;
// 次の配列番号
myflg = (myflg==0) ? 1 : 0;
// 表示・非表示フラグ反転
if (myflg == 0){
document.getElementById("idshow1").src = myImage[myNowCnt];
// 次の画像をセットする
document.getElementById("idshow1").className = "fadein";
// フェードイン
document.getElementById("idshow2").className = "fadeout";
// フェードアウト
}else{
document.getElementById("idshow2").src = myImage[myNowCnt];
// 次の画像をセットする
document.getElementById("idshow1").className = "fadeout";
// フェードアウト
document.getElementById("idshow2").className = "fadein";
// フェードイン
}
setTimeout( "myChange()" , 4000 ); // 4秒周期に画像を更新する
}
// --></script>
<div style="border-style:ridge; border-width:8px; border-radius:10px; box-shadow:10px 10px 10px rgba(0,0,0,0.5); border-color:#800000; width:320px;">
<img id="idshow1" class="fadeout" style="position:absolute;" src="IMG_088.gif" width="320" height="240">
<img id="idshow2" class="fadein" src="IMG_0141.gif" width="320" height="240">
</div>
<script type="text/javascript"><!--
myChange();
// --></script>

↓ このフォームには、上記のリストと同じものが入っています。[CTRL]+[A]で全選択して、コピーできます。
▲TOP
サンプルだけの HTMLは こちらへ

説明


Step.65のスライドショーが地味なので表示効果をつけてみます。

表示効果は、現在表示している画像がフェードアウトしていきながら、次の画像がフェードインしてくる効果です。
なんのことはない、Step.100の CSSの使い回しです。
要するに、2枚の画像を重ねて、片方をフェードアウト、もう片方をフェードインさせてるだけです。


画像は myImage配列にセットした順に表示していき、最後まで表示すると再び最初の画像にもどります。
2つしか画像をセットしていなければ、交互に表示となります。
myImage = new Array(
// 画像ファイル名の設定
"IMG_088.gif",
// 鯉
"IMG_0141.gif",
// 滝
"IMG_0400.gif",
// 石仏
"IMG_0667.gif",
// 橋
"IMG_0679.gif"
// 山
);

<img id="idshow1" class="fadeout" style="position:absolute;" src="IMG_088.gif" width="320" height="240">
<img id="idshow2" class="fadein" src="IMG_0141.gif" width="320" height="240">
片方のタグに style="position:absolute;"をつけて、画像を重ねました。
それぞれに IDを振って、CLASSに fadeout、fadein を順に振ります。

リストそのものは、Step.65のソースに Step.100の CSS3を貼りつけて Step.102の CSSで飾っただけなので、詳しくはそちらを参照ください。
やってることは、4秒周期に次の画像を表示して、CLASS名を変えてフェード効果を発動させています。フェード効果は3秒に設定しています。
▲TOP