ホームページ作成/画像の表示・活用 (HTML,CSS,JavaScript)

JavaScriptで画像のスライドショーを作成する方法(7ページ目)

一定秒数ごとに自動的に画像とキャプションが切り替わるスライドショー機能の簡単な作り方を解説。HTMLで画像とキャプションの表示空間を用意し、CSSで装飾を加え、JavaScriptで指定時間ごとに表示内容を切り替えることでスライドショーを作成する方法を、動作サンプルと共にご紹介。一時停止ボタンも作成して、好きな画像をじっくり鑑賞できるスライドショーです。

西村 文宏

執筆者:西村 文宏

ホームページ作成ガイド

B. 画像と一緒にキャプションも切り替えるスライドショー完成

これまでに掲載したHTML+CSS+JavaScriptソースを表示すると、以下のように見えます。
 
画像とキャプションを同時に切り替えるシンプルなスライドショー

画像とキャプションを同時に切り替えるシンプルなスライドショー


実際に動作を試すには、サンプルページ「JavaScriptで作るスライドショーのサンプルB」をご覧下さい。
 

スライドショーサンプルBのソースまとめ

これまでに記述したソースを一括再掲しておきます。コピー&ペーストして使ってみる際にご活用下さい。

CSSソース:
CSSの記述は必須ではありません。
<style type="text/css">
.showbox {
   display: inline-block;
}
.showbox p {
   text-align: center;
}
.showbox img {
   border: 2px solid #00a;
   display: block;
}
#slidecaption {
   background-color: #00a;
   color: white;
   font-weight: bold;
   display: block;
}
</style>

HTMLソース:
<div class="showbox">
   <!-- ▼スライドショーを表示する場所 -->
   <p>
      <img src="slideshow.jpg" id="slideshow" alt="スライドショー表示領域">
      <span id="slidecaption">キャプション</span>
   </p>
   <!-- ▼スライドショーの制御ボタンを表示 -->
   <p>
      <input type="button" value="- 開始/停止 -" id="startstopbutton">
   </p>
</div>

JavaScriptソース
以下のJavaScriptソースは、先のHTMLソースよりも後に記述して下さい。先のHTMLソースよりも前に読み込まれてしまうと動きません。
<script type="text/javascript">
   // ------------------------------------------------------------
   // ▼設定:スライドショーで見せたい画像ファイルとキャプション群
   // ------------------------------------------------------------
   var imgset = [
      ["sky.jpg"        , "1.空"          ] ,
      ["snowwoods.jpg"  , "2.雪の山"      ] ,
      ["water.jpg"      , "3.水面"        ] ,
      ["beachsky.jpg"   , "4.ビーチ"      ] ,
      ["greenplain.jpg" , "5.平原"        ] ,
      ["seashipsky.jpg" , "6.海に浮かぶ船"]      /* 最後にはカンマ不要 */
   ];

   // -----------------------------------------------
   // ▼関数A:指定画像を順に表示させる
   // -----------------------------------------------
   var counter = 0;
   function slideimage() {
      if( counter >= imgset.length ) {
         // カウンタが画像数よりも大きくなったら0番に戻す
         counter = 0;
      }
      document.getElementById('slideshow').src = imgset[counter][0];
      document.getElementById('slidecaption').innerHTML = imgset[counter][1];
      counter++;
   }

   // -----------------------------------------------
   // ▼関数B:スライドショーを制御
   // -----------------------------------------------
   var slideid = 0;
   function startstopshow() {
      if( slideid == 0 ) {
         // 始まっていなければ始める
         slideid = setInterval(slideimage,1000);      // 1000は切替秒数(ミリ秒)
      }
      else {
         // IDがあれば止める
         clearInterval(slideid);
         slideid = 0;
      }
   }

   // ▼ボタンクリックに関数を割り当てる
   document.getElementById('startstopbutton').onclick = startstopshow;
</script>
必要なソースは以上です。

グローバル変数に関する注意:
このスライドショーサンプルBでは、ソースと説明を簡単にするために、同一ページ内にはスライドショーを1個しか掲載しないことを前提にしており、カウント用の変数などはすべてグローバル変数にしています。したがって、このままでは同一ページ内に複数個のスライドショーを設置できません。複数の設置を可能にするソースの書き方等については、最後の「サンプルC」をご覧下さい。


それでは、最後に「C. 同一ページ内で、個別に動作する複数のスライドショーを掲載できるバージョン」を見ていきましょう。
  • 前のページへ
  • 1
  • 6
  • 7
  • 8
  • 次のページへ

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます