準備
1.以下のファイルをダウンロードし、好きな場所に解凍する。
jQueryTemplate
1 ファイル 109.82 KB
2.先ほどダウロードしたフォルダはjQueryを用いたWebサイト開発に最適な構成である。これを複製していくことによって新しいプロジェクトを作成する。Templateフォルダを複製しフォルダ名をLesson03としよう。
スライドショーの作成
3.下をダウンロードして、3枚の画像をimagesフォルダに置く。
beatlesImages
1 ファイル 384.99 KB
4.index.htmlを以下のように編集
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>タイトル</title> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="css/normalize.css"> <link rel="stylesheet" href="css/main.css"> </head> <body> <div id="container"> <div class="slideshow"> <img src="images/slide-1.jpg"> <img src="images/slide-2.jpg"> <img src="images/slide-3.jpg"> </div> </div> <script src="js/vendor/jquery-1.12.4.min.js"></script> <script src="js/vendor/jquery-ui-1.12.1.min.js"></script> <script src="js/vendor/jquery.easing.1.3.js"></script> <script src="js/main.js"></script> </body> </html>
5.main.cssを以下のように編集。
.slideshow{ overflow:hidden; position:relative; width:960px; height:415px; margin:0 auto; } .slideshow img{ display: none; position:absolute; }
6.main.jsを以下のように編集。
$(function(){ $('.slideshow').each(function(){ var $slides=$(this).find('img'); var i=0; $slides.eq(i).fadeIn(); setInterval(function(){ $slides.eq(i++).fadeOut(); if(i==$slides.length){i=0;} $slides.eq(i).fadeIn(); },3000); }); });
7.実行してみよう。フェイドしながら画像が入れ替わることが確認できる。
[解説]
var $slides=$(this).find('img');
slideshowというクラスがついて要素に対してそれぞれeachで処理を行っている。ここでの$(this)はslideshowというクラスがついている要素の一つ一つ(今回は一つしかない)。その要素からfindで子孫検索を行いimg要素を取得している。(今回は3つ)
その要素を$slidesという変数に代入している。この$は単なる変数名につけているだけなのでなくても問題ない。ただ、それがjQueryオブジェクトとわかりやすいため、つけるコーディングルールを採用している場合も多い。
$slides.eq(i).fadeIn();
複数要素の特定のインデックスを指定する場合にeq(index)が使える。fadeIn()はdisplay:noneになっている要素をフェードインさせる。
setInterval(function(){処理},3000);
setIntervalはjavascpriptの機能、第2引数の時間ごとに第1引数の処理を繰り返し行う。
コメント