フェードイン・フェードアウトによる画像スライドショーを jQuery で簡単に

投稿日:2012年11月9日

画像をフェードイン・フェードアウトしながらスライドショー をするサンプルです。jQuery を利用すれば、数行のコードを追加するだけで実装できます。

サンプル

サンプルのソースです。

HTML


<div id="cover">
    <div><img src="demo-pic-1.jpg"></div>
    <div><img src="demo-pic-2.jpg"></div>
    <div><img src="demo-pic-3.jpg"></div>
    <div><img src="demo-pic-4.jpg"></div>
    <div><img src="demo-pic-5.jpg"></div>
</div>
  

HTML はシンプルに画像を並べただけです。画像の数はいくつあっても動作します。環境(Androidなど)によっては画像の切り替え時に縦横比率がおかしな動作をすることがあるため、「img」を「div」で囲んでいます。

CSS


#cover {
    width: 400px;
    height: 250px;
    position: relative;
    overflow: hidden;
}

#cover>div {
    position: absolute;
    top: 0;
    opacity: 0;
}
  

「#cover」で指定したサイズが表示部分のサイズです。中の要素はトップに揃えて重ね、「opacity」を切り替えて見せています。

JavaScript


(function($) {

    var fadeInOut = function ($element) {
        var $children = $element.children(),
            current = 0,
            time = 5000,
            speed = '3s';
      
        $children.css({ transition: speed })
                 .eq(current).css({ opacity: '1' });
      
        setInterval(function () {
            $children.eq(current).css({ opacity: '0' });
            current = current === $children.length - 1 ? 0 : current += 1;
            $children.eq(current).css({ opacity: '1' });
        }, time);
    };

    fadeInOut($('#cover'));

})(jQuery);
  

ここでは、画像を表示している時間を5秒・画像を切り替えるスピードを3秒に設定しています。「time」と「speed」の値を変更して任意の時間に設定できます。
(「time」は setInterval に設定するミリ秒単位の数値・「speed」は css transition に設定する文字列です)

(藤崎)

関連記事

  • LINEスタンプ販売中!「カフィーノ♪」 BRISKオリジナル