jQuery3

jQuery

準備

1.以下のファイルをダウンロードし、好きな場所に解凍する。


2.先ほどダウロードしたフォルダはjQueryを用いたWebサイト開発に最適な構成である。これを複製していくことによって新しいプロジェクトを作成する。Templateフォルダを複製しフォルダ名をLesson03としよう。

スライドショーの作成

3.下をダウンロードして、3枚の画像をimagesフォルダに置く。


4.index.htmlを以下のように編集

01<!DOCTYPE html>
02<html>
03    <head>
04        <meta charset="utf-8">
05        <title>タイトル</title>
06        <meta name="viewport" content="width=device-width, initial-scale=1">
07        <link rel="stylesheet" href="css/normalize.css">
08        <link rel="stylesheet" href="css/main.css">
09    </head>
10    <body>
11       <div id="container">
12         <div class="slideshow">
13            <img src="images/slide-1.jpg">
14            <img src="images/slide-2.jpg">
15            <img src="images/slide-3.jpg">
16         </div>
17 
18       </div>
19      <script src="js/vendor/jquery-1.12.4.min.js"></script>
20      <script src="js/vendor/jquery-ui-1.12.1.min.js"></script>
21      <script src="js/vendor/jquery.easing.1.3.js"></script>
22      <script src="js/main.js"></script>
23    </body>
24</html>

5.main.cssを以下のように編集。

01.slideshow{
02  overflow:hidden;
03  position:relative;
04  width:960px;
05  height:415px;
06  margin:0 auto;
07}
08.slideshow img{
09  display: none;
10  position:absolute;
11}

6.main.jsを以下のように編集。

01$(function(){
02  $('.slideshow').each(function(){
03    var $slides=$(this).find('img');
04    var i=0;
05    $slides.eq(i).fadeIn();
06    setInterval(function(){
07      $slides.eq(i++).fadeOut();
08      if(i==$slides.length){i=0;}
09      $slides.eq(i).fadeIn();
10    },3000);
11  });
12});

7.実行してみよう。フェイドしながら画像が入れ替わることが確認できる。
[解説]

slideshowというクラスがついて要素に対してそれぞれeachで処理を行っている。ここでの$(this)はslideshowというクラスがついている要素の一つ一つ(今回は一つしかない)。その要素からfindで子孫検索を行いimg要素を取得している。(今回は3つ)
その要素を$slidesという変数に代入している。この$は単なる変数名につけているだけなのでなくても問題ない。ただ、それがjQueryオブジェクトとわかりやすいため、つけるコーディングルールを採用している場合も多い。

複数要素の特定のインデックスを指定する場合にeq(index)が使える。fadeIn()はdisplay:noneになっている要素をフェードインさせる。

1setInterval(function(){処理},3000);

setIntervalはjavascpriptの機能、第2引数の時間ごとに第1引数の処理を繰り返し行う。

コメント

タイトルとURLをコピーしました