INDEX
目次
5章:スライドショーとゲーム実装
この章では、jQueryを使ったスライドショーとゲームUIの実装方法を学びます。
具体的には、
===
を作成し、それぞれのHTML、CSS、jQueryでの実装方法を解説します。
具体的には、
===
- 横スクロールスライドショー
- フェードイン/アウトスライドショー
- カウントアップゲーム
を作成し、それぞれのHTML、CSS、jQueryでの実装方法を解説します。
【5-1】横スクロールスライドショー
横スクロールスライドショーとは、複数のスライドが横に並び、ボタン操作などでスライドが横方向に移動するUIです。製品紹介やギャラリーなどでよく利用されます。
HTML/CSS構造
スライドショーのHTMLを作成する
<div class="slideshow-container"> <div class="slides"> <div class="slide"><img src="image1.jpg" alt="スライド1"></div> <div class="slide"><img src="image2.jpg" alt="スライド2"></div> <div class="slide"><img src="image3.jpg" alt="スライド3"></div> </div> <button class="prev">前へ</button> <button class="next">次へ</button> </div>
サンプルコード
- スライドショー全体を
slideshow-container
で囲む。 - スライドを横に並べる
slides
、各スライドのslide
要素、そしてナビゲーションボタンを配置。
CSSでスライドショーのスタイルを整える
.slideshow-container { width: 500px; height: 300px; overflow: hidden; position: relative; border: 2px solid #333; } .slides { display: flex; transition: transform 0.5s ease-in-out; /* アニメーション効果 */ } .slide { width: 500px; height: 300px; flex-shrink: 0; /* スライドが縮まないように */ } .slide img { width: 100%; height: 100%; object-fit: cover; /* 画像の縦横比を保ちつつ調整 */ } .prev, .next { position: absolute; top: 50%; transform: translateY(-50%); background-color: rgba(0, 0, 0, 0.5); color: white; border: none; padding: 10px 20px; cursor: pointer; } .prev { left: 10px; } .next { right: 10px; }
サンプルコード
overflow: hidden;
を設定することで、slideshow-container
の領域外にはみ出したスライドを非表示。
jQueryの実装
$(document).ready(function () { let slideWidth = $(".slide").outerWidth(); // スライドの幅 let currentPosition = 0; let totalSlides = $(".slide").length; $(".next").click(function () { if (currentPosition < totalSlides - 1) { currentPosition++; $(".slides").css( "transform", `translateX(${-slideWidth * currentPosition}px)` ); } }); $(".prev").click(function () { if (currentPosition > 0) { currentPosition--; $(".slides").css( "transform", `translateX(${-slideWidth * currentPosition}px)` ); } }); });
サンプルコード
コード | 各コードの機能 |
---|---|
$(document).ready(function () {...})
|
ページの読み込みが完了したらスクリプトを実行 |
let slideWidth = $(".slide").outerWidth();
|
最初のスライド要素の幅を取得し、スライド移動量に利用 |
let currentPosition = 0;
|
現在表示中のスライド番号を初期化(0番目からスタート) |
let totalSlides = $(".slide").length;
|
スライド全体の枚数を取得 |
$(".next").click(function () {...})
|
「次へ」ボタンをクリックしたときの処理を定義 |
if (currentPosition < totalSlides - 1) {...}
|
現在位置が最後のスライドでない場合のみ処理を実行 |
currentPosition++;
|
現在のスライド番号を1つ進める |
$(".slides").css("transform", `translateX(${-slideWidth * currentPosition}px)`);
|
スライド全体を左に移動させ、次のスライドを表示 |
$(".prev").click(function () {...})
|
「前へ」ボタンをクリックしたときの処理を定義 |
if (currentPosition > 0) {...}
|
現在位置が最初のスライドでない場合のみ処理を実行 |
currentPosition--;
|
現在のスライド番号を1つ戻す |
$(".slides").css("transform", `translateX(${-slideWidth * currentPosition}px)`);
|
スライド全体を右に移動させ、前のスライドを表示 |
詳しい解説
$(".next").click(function() {...})
:「次へ」ボタンをクリックした時の処理if(currentPosition < totalSlides - 1)
条件「もしcurrentPositionよりtotalSlides-1の方が大きい」を満たす場合条件「もしcurrentPositionよりtotalSlides-1の方が大きい」を満たさない場合
【5-2】フェードイン/アウトスライドショー
フェードイン/アウトスライドショーとは、スライドがフェードイン、フェードアウト効果で切り替わるUIです。よりスムーズで視覚的な変化を楽しめます。
HTML/CSS構造
スライドショーのHTMLを作成する
<div class="slideshow-container"> <img src="image1.jpg" class="slide active" alt="Image 1"> <img src="image2.jpg" class="slide" alt="Image 2"> <img src="image3.jpg" class="slide" alt="Image 3"> <button class="prev">前へ</button> <button class="next">次へ</button> </div>
サンプルコード
- スライドを
.slide
クラスで定義し、最初に見せるスライドに.active
クラスを付与。
CSSでスライドショーのスタイルを整える
.slideshow-container { width: 500px; height: 300px; position: relative; border: 2px solid #333; overflow: hidden; } .slide { position: absolute; top: 0; left: 0; width: 100%; height: 100%; object-fit: cover; /* 画像がコンテナにフィットするように */ opacity: 0; /* 最初は非表示 */ transition: opacity 1s ease-in-out; /* フェード効果 */ } .slide.active { opacity: 1; /* 表示状態 */ } .prev, .next { position: absolute; top: 50%; transform: translateY(-50%); background-color: rgba(0, 0, 0, 0.5); color: white; border: none; padding: 10px 20px; cursor: pointer; } .prev { left: 10px; } .next { right: 10px; }
サンプルコード
position: absolute;
とopacity: 0;
を組み合わせることで、スライドを重ねて配置し、初期状態では非表示。
jQueryの実装
$(document).ready(function() { let slides = $(".slide"); let currentSlide = 0; let slideCount = slides.length; function showSlide(index) { slides.removeClass("active").eq(index).addClass("active"); } $(".next").click(function() { currentSlide = (currentSlide + 1) % slideCount; showSlide(currentSlide); }); $(".prev").click(function() { currentSlide = (currentSlide - 1 + slideCount) % slideCount; showSlide(currentSlide); }); // 自動スライド(3秒ごと) setInterval(function() { currentSlide = (currentSlide + 1) % slideCount; showSlide(currentSlide); }, 3000); });
サンプルコード
コード | 各コードの機能 |
---|---|
$(document).ready(function() {...})
|
ページの読み込みが完了したらスクリプトを実行 |
let slides = $(".slide");
|
全てのスライド要素を取得 |
let currentSlide = 0;
|
現在のスライド番号を0で初期化 |
let slideCount = slides.length;
|
スライドの総数を取得 |
function showSlide(index) {...}
|
指定された番号のスライドを表示する関数(他は非表示にする) |
slides.removeClass("active").eq(index).addClass("active");
|
全スライドからactive クラスを外し、対象スライドにactive を付与して表示
|
$(".next").click(function() {...})
|
「次へ」ボタンをクリックしたときの処理を定義 |
currentSlide = (currentSlide + 1) % slideCount;
|
現在のスライド番号を1つ進める(最後のスライドの次は0に戻る) |
$(".prev").click(function() {...})
|
「前へ」ボタンをクリックしたときの処理を定義 |
currentSlide = (currentSlide - 1 + slideCount) % slideCount;
|
現在のスライド番号を1つ戻す(最初のスライドから戻ると最後にループ) |
setInterval(function() {...}, 3000);
|
3秒ごとに自動でスライドを切り替える処理を実行 |
currentSlide = (currentSlide + 1) % slideCount;
|
自動スライド時に現在のスライド番号を進める(ループ対応) |
showSlide(currentSlide);
|
更新された番号のスライドを表示 |
詳しい解説
【5-3】カウントアップゲーム
カウントアップゲームとは、時間経過とともに数字が増加していくシンプルなゲームです。スタート/ストップボタンでカウントを制御します。
HTML/CSSの構造
ゲームのHTMLを作成する
<div class="game-container"> <div id="counter">0</div> <button id="start">スタート</button> <button id="stop">ストップ</button> <button id="reset">リセット</button> </div>
サンプルコード
- カウンター表示用の
div
、スタートボタン、ストップボタンを配置。
CSSでゲームのスタイルを整える
.game-container { text-align: center; margin-top: 50px; } #counter { font-size: 48px; font-weight: bold; margin-bottom: 20px; } button { padding: 10px 20px; font-size: 16px; cursor: pointer; margin: 5px; cursor: pointer; border: none; border-radius: 5px; } #start { background-color: #4CAF50; color: white; } #stop { background-color: #F44336; color: white; } #reset { background-color: #008CBA; color: white; }
サンプルコード
- 中央揃え
text-align: center;
やフォントサイズなどを調整。
jQueryの実装
$(document).ready(function() { let counter = 0; let intervalId = null; function updateCounter() { counter++; $("#counter").text(counter); } $("#start").click(function() { if (intervalId === null) { // 二重に開始しないようにする intervalId = setInterval(updateCounter, 100); } }); $("#stop").click(function() { clearInterval(intervalId); intervalId = null; }); $("#reset").click(function() { clearInterval(intervalId); intervalId = null; counter = 0; $("#counter").text(counter); }); });
サンプルコード
コード | 各コードの機能 |
---|---|
$(document).ready(function() {...})
|
ページの読み込みが完了したらスクリプトを実行 |
let counter = 0;
|
カウントの初期値を0に設定 |
let intervalId = null;
|
setInterval のIDを保存する変数(開始・停止管理用) |
function updateCounter() {...}
|
カウンターを1増やし、画面上の数値を更新する関数 |
counter++;
|
カウントを1増加 |
$("#counter").text(counter);
|
HTML要素#counter のテキストを更新
|
$("#start").click(function() {...})
|
「スタート」ボタンをクリックしたときの処理を定義 |
if (intervalId === null) {...}
|
すでにカウントが開始されていない場合のみ setInterval を実行(二重起動防止) |
intervalId = setInterval(updateCounter, 100);
|
0.1秒(100ms)ごとにupdateCounter を繰り返し実行
|
$("#stop").click(function() {...})
|
「ストップ」ボタンをクリックしたときの処理を定義 |
clearInterval(intervalId); intervalId = null;
|
setInterval を停止し、管理変数をリセット |
$("#reset").click(function() {...})
|
「リセット」ボタンをクリックしたときの処理を定義 |
counter = 0; $("#counter").text(counter);
|
カウントを0に戻し、画面の表示もリセット |
詳しい解説
【5-4】演習課題
演習課題07:スライドショーの機能拡張
途中で躓いたら、教材を振り返りながら進めてみましょう。
解き終わったら、
解き終わったら、
07_end
フォルダ内の解答例と見比べて、自分の実装を確認してみましょう。演習課題08:ゲーム要素の組み込み
途中で躓いたら、教材を振り返りながら進めてみましょう。
解き終わったら、
解き終わったら、
08_end
フォルダ内の解答例と見比べて、自分の実装を確認してみましょう。【5-5】最後に【プラグインの紹介】
jQueryには、色々な拡張機能を備えたプラグインが使いきれないほどにあります。さらにプラグインは自作することもできるので、その可能性は無限に広がっています。
ここでは、最後に3つのプラグインを簡単に紹介します!
ここでは、最後に3つのプラグインを簡単に紹介します!
Slick
- Slickは、レスポンシブ対応のスライダーを簡単に作れるプラグインです。
- 画像のカルーセルやスライドショーなどに活用でき、見た目も美しく、設定項目も豊富です。
- スマホ対応もバッチリなので、様々な場面で活躍します。
Swiper
- Swiperもスライダー系のプラグインですが、特にモバイルでの操作性が抜群です。
- 画像のカルーセルやスライドショーなどに活用でき、見た目も美しく、設定項目も豊富です。スマホ対応もバッチリなので、様々な場面で活躍します。
Chart.js
- Chart.jsは、シンプルなコードで美しいグラフを描画できるプラグインです。
- 円グラフ、棒グラフ、折れ線グラフなど、よく使われるチャートを手軽に作成でき、視覚的にデータを表現したいときに重宝します。
このように、jQueryプラグインには便利で強力なものがたくさんあります。
今回紹介したのはたくさんある中の一部です。ぜひ自分でも気になるプラグインを探して、どんどん試してみてくださいね!使いこなせば、Web制作の幅がぐっと広がります。
今回紹介したのはたくさんある中の一部です。ぜひ自分でも気になるプラグインを探して、どんどん試してみてくださいね!使いこなせば、Web制作の幅がぐっと広がります。
この章では、スライドショーとゲームの実装方法を学びました。
全5章に渡りjQueryの学習、お疲れ様でした。 この教材が、今後のWeb制作の役に立つことを願っています!
全5章に渡りjQueryの学習、お疲れ様でした。 この教材が、今後のWeb制作の役に立つことを願っています!