サンプル
◆html
1行目:HTML5であることを宣言
6行目:
jQueryを読み込む。
7行目:
slideshowImgInHtml.js を読み込む。
24-30行目:
スライドショーを構成する部分
24行目:
div要素、id="slideshow" とする。
data-interval="3000":切り替え間隔を3000msに設定
data-animate-time="500":切り替え時のアニメーションの時間を500msに設定
25-29行目:
画像ファイルとキャプションを設定
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>SlideShow</title> <script src="http://code.jquery.com/jquery-latest.min.js"></script> <script src="slideshowImgInHtml.js"></script> <style> #slideshow { width:800px; margin:0 auto; text-align: center; } #slideshow p { font: bold 16px arial,sans-serif; text-align: center; } </style> </head> <body> <div id="wrap"> <div id="slideshow" data-interval="3000" data-animate-time="500"> <div><img src="http://farm6.static.flickr.com/5052/5503321609_d9e9571af9_z.jpg"/><p>いすみ鉄道</p></div> <div><img src="http://farm6.static.flickr.com/5013/5546595586_6f6966e6ca_z.jpg"/><p>いすみ(蛍)</p></div> <div><img src="http://farm6.static.flickr.com/5263/5616428686_82610176c3_z.jpg"/><p>飯給</p></div> <div><img src="http://farm6.static.flickr.com/5251/5503249326_6b1c255324_z.jpg"/><p>いちはら市民の森</p></div> <div><img src="http://farm6.static.flickr.com/5136/5546824600_af97b41fe5_z.jpg"/><p>君ヶ浜から見た犬吠崎灯台</p></div> </div> </div> </body> </html>
◆javascript(slideshowImgInHtml.js)
1-3行目:
ページを読み込んだ時に実行する関数。関数 slideShow を実行する。
6-52行目:関数 slideShow()
スライドショーを実行する。
8-9行目:
スライドショーの切り替え間隔(interval)と切り替え時のアニメーションの時間(animateTime)の
初期値を設定
11-15行目:
html で設定したdata-interval, data-interval の値を interval, animateTime に代入。
data-interval, data-interval がなければ、初期値の値を使う。
17-22行目:
子要素 div のスタイルを設定する。(position: "absolute" を指定しないと、
スライドショーが切り替わるたびに表示位置がずれてしまう。)
24-29行目:
子要素 div の最初の要素を active 、不透明にする(表示する)。
31行目:
一定期間(interval)ごとに関数 slideSwitch()を実行する。
33-50行目:関数 slideShow() のインナー関数 slideSwitch()
active な要素を透明にアニメーションして、次の要素を不透明にアニメーションする。
アニメーション時間は animateTime。
ローカル変数 animateTime を使えるようにインナー関数にしてある。
(なぜか、function slideSwitch() { } では、関数が定義されない。
31行目の setInterval でエラーが発生する。)
35-40行目:
active な要素を $active に代入する。active な要素の次の要素を $next に代入する。
次の要素がなければ(active な要素が最後の要素なら)、最初の要素を $next に代入する。
42-47行目:
$next に代入された要素をアニメーションで不透明にする(表示する)。
active な要素を active でなくす。
48行目:
$active に代入された要素をアニメーションで透明にする(非表示にする)。
ページを読み込んだ時に実行する関数。関数 slideShow を実行する。
6-52行目:関数 slideShow()
スライドショーを実行する。
8-9行目:
スライドショーの切り替え間隔(interval)と切り替え時のアニメーションの時間(animateTime)の
初期値を設定
11-15行目:
html で設定したdata-interval, data-interval の値を interval, animateTime に代入。
data-interval, data-interval がなければ、初期値の値を使う。
17-22行目:
子要素 div のスタイルを設定する。(position: "absolute" を指定しないと、
スライドショーが切り替わるたびに表示位置がずれてしまう。)
24-29行目:
子要素 div の最初の要素を active 、不透明にする(表示する)。
31行目:
一定期間(interval)ごとに関数 slideSwitch()を実行する。
33-50行目:関数 slideShow() のインナー関数 slideSwitch()
active な要素を透明にアニメーションして、次の要素を不透明にアニメーションする。
アニメーション時間は animateTime。
ローカル変数 animateTime を使えるようにインナー関数にしてある。
(なぜか、function slideSwitch() { } では、関数が定義されない。
31行目の setInterval でエラーが発生する。)
35-40行目:
active な要素を $active に代入する。active な要素の次の要素を $next に代入する。
次の要素がなければ(active な要素が最後の要素なら)、最初の要素を $next に代入する。
42-47行目:
$next に代入された要素をアニメーションで不透明にする(表示する)。
active な要素を active でなくす。
48行目:
$active に代入された要素をアニメーションで透明にする(非表示にする)。
$(function() { slideShow(); }); function slideShow() { var interval = 3000; var animateTime = 1000; var $slideshow = $('#slideshow'); var $interval = $slideshow.data('interval'); if($interval) interval = Number($interval); var $animateTime = $slideshow.data('animate-time'); if($animateTime) animateTime = Number($animateTime); $('#slideshow div').each(function(){ $(this).css({ position: "absolute", // ボックスの配置を絶対位置に設定する。 opacity: 0.0 // div要素の透過度を0.0(透明)に設定する。 }); }); $('#slideshow div:first') .addClass('active') // 最初の要素をactiveに設定する。 .css({ opacity: 1.0 // div要素の透過度を1.0(不透明)に設定する。 }) ; setInterval( "slideSwitch()", interval ); // slideSwitch()を時間intervalごと繰り返す。 slideSwitch = function() { var $active = $('#slideshow div.active'); if ($active.next().length) { $next = $active.next(); // activeな要素の次の要素を$nextに定義 } else { $next = $('#slideshow div:first'); // nextがなければ最初の要素を$nextに定義 } $next .css({opacity: 0.0}) .addClass('active') .animate({opacity: 1.0}, animateTime, function() { // 次の要素の透過度を1.0にアニメーションする。 $active.removeClass('active'); // activeな要素からclass='active'を削除 }); $active.animate({opacity: 0.0}, animateTime, function() {}); // 今の要素の透過度を0.0にアニメーションする。 } }
参考にしたページ
スライドショー作り方(A Simple jQuery Slideshow)以上