INDEX
目次
4章:モーダルとパネル実装
この章では、jQueryを使ったモーダルとパネルの実装方法を学びます。
具体的には、
===
を作成し、それぞれのHTML、CSS、jQueryでの実装方法を解説します。
具体的には、
===
- ライトボックス風モーダルウィンドウ
- アコーディオンパネル
- 画像ビューアー
を作成し、それぞれのHTML、CSS、jQueryでの実装方法を解説します。
【4-1】ライトボックス風モーダルウィンドウ
ライトボックス風のモーダルウィンドウとは、Webページ上の画像をクリックした際に、画像を拡大して表示する際に使用される一般的なUIパターンです。
HTML/CSS構造
モーダルウィンドウのHTMLを作成する
<div class="container"> <img src="image1.jpg" class="thumbnail" alt="Image 1"> <img src="image2.jpg" class="thumbnail" alt="Image 2"> </div> <div id="modal" class="modal"> <span class="close">×</span> <img class="modal-content" id="modal-img"> </div>
サンプルコード
- モーダルウィンドウ全体を囲む
div
要素を作成し、id
をmodal
とします。
CSSでモーダルウィンドウのスタイルを整える
.modal { display: none; /* Initially hidden */ position: fixed; z-index: 1; left: 0; top: 0; width: 100%; height: 100%; overflow: auto; background-color: rgba(0,0,0,0.4); } .modal-content { margin: auto; display: block; max-width: 700px; } .close { position: absolute; top: 15px; right: 35px; color: #f1f1f1; font-size: 40px; font-weight: bold; transition: 0.3s; } .thumbnail { width: 150px; height: auto; cursor: pointer; margin: 10px; border: 2px solid #ccc; transition: 0.3s; } .thumbnail:hover { border: 2px solid #777; }
サンプルコード
.modal
にdisplay: none;
を指定し、初期状態では非表示にする。
jQueryの実装
「モーダルの表示/非表示を制御」と「画像を表示」するための基本的な機能を実装します。
$(document).ready(function() { $(".thumbnail").click(function() { let imageSrc = $(this).attr("src"); $("#modal-img").attr("src", imageSrc); $("#modal").fadeIn(); }); $(".close").click(function() { $("#modal").fadeOut(); }); });
サンプルコード
コード | 各コードの機能 |
---|---|
$(document).ready(function() {...}) | ページの読み込みが完了したらスクリプトを実行 |
$(".thumbnail").click(function() {...}) | サムネイル画像をクリックした時の処理 |
let imageSrc = $(this).attr("src"); | クリックされた画像の src 属性を取得 |
$("#modal-img").attr("src", imageSrc); | モーダル内の画像要素の src 属性を、クリックされた画像の src 属性に設定 |
$("#modal").fadeIn(); | モーダルウィンドウをフェードイン |
$(".close").click(function() {...}) | モーダルウィンドウの閉じるボタンをクリックした時の処理 |
$("#modal").fadeOut(); | モーダルウィンドウをフェードアウト |
【4-2】アコーディオンパネルの実装
アコーディオンパネルとは、複数のコンテンツ領域を縦に並べ、クリックすることで開閉できるUIコンポーネントです。よくFAQや詳細情報の表示に使用されます。
HTML/CSS構造
アコーディオンパネルのHTMLを作成する
<div class="accordion"> <div class="accordion-header">セクション1</div> <div class="accordion-content">セクション1の内容</div> <div class="accordion-header">セクション2</div> <div class="accordion-content">セクション2の内容</div> </div>
サンプルコード
-
accordion-header
クラスを持つdiv
要素と、accordion-content
クラスを持つdiv
要素を組み合わせて作成。
.accordion { width: 80%; max-width: 600px; margin: 20px auto; border: 1px solid #ccc; border-radius: 5px; overflow: hidden; } .accordion-content { display: none; padding: 15px; border: 1px solid #ccc; } .accordion-header { background-color: #f0f0f0; padding: 15px; cursor: pointer; font-size: 18px; font-weight: bold; border-bottom: 1px solid #ccc; transition: background 0.3s; } .accordion-header.active { background-color: #d0d0d0; }
サンプルコード
-
.accordion-content
にdisplay: none;
を指定し、アコーディオンのコンテンツは初期状態では非表示。
jQueryの実装
$(document).ready(function() { $(".accordion-header").click(function() { $(".accordion-content").slideUp(); // 他の開いているパネルを閉じる if ($(this).next(".accordion-content").is(":hidden")) { $(this).next(".accordion-content").slideDown(); $(".accordion-header").removeClass("active"); $(this).addClass("active"); } else { $(this).next(".accordion-content").slideUp(); $(this).removeClass("active"); } }); });
サンプルコード
コード | 各コードの機能 |
---|---|
$(document).ready(function() {...}) |
ページの読み込みが完了したらスクリプトを実行 |
$(".accordion-header").click(function() {...}) |
アコーディオンヘッダーをクリックした時の処理 |
$(".accordion-content").slideUp(); |
他のアコーディオンコンテンツを閉じる |
if |
もし |
$(this).next(".accordion-content").is(":hidden") |
クリックされたヘッダーの次の要素(コンテンツ)が非表示であるならば、以下を実行 |
$(this).next(".accordion-content").slideDown(); |
クリックされたヘッダーの次の要素(コンテンツ)をスライド表示 |
$(".accordion-header").removeClass("active"); |
すべてのアコーディオンヘッダーから active クラスを削除 |
$(this).addClass("active"); |
クリックされたアコーディオンヘッダーに active クラスを追加 |
else |
if の条件に当てはまらない場合の処理 |
$(this).next(".accordion-content").slideUp(); |
クリックされたヘッダーの次の要素(コンテンツ)を閉じる |
$(this).removeClass("active"); |
クリックされたアコーディオンヘッダーから active クラスを削除 |
【4-3】画像ビューアーの実装
画像ビューアーとは、複数の画像を一覧表示し、選択した画像をメイン表示領域に表示するUIです。製品紹介やポートフォリオサイトなどでよく利用されます。
HTML/CSS構造
画像ビューアーのHTMLを作成する
<div id="viewer"> <img id="main-image" src="image1.jpg" alt="Main Image"> <div id="thumbnails"> <img src="image1.jpg" class="thumbnail" alt="Thumbnail 1"> <img src="image2.jpg" class="thumbnail" alt="Thumbnail 2"> <img src="image3.jpg" class="thumbnail" alt="Thumbnail 3"> </div> </div>
サンプルコード
#main-image
は、メインで表示される画像の領域を定義。#thumbnails
は、クリック可能なサムネイル画像を含む領域を定義。
CSSで画像ビューアーのスタイルを整える
#viewer { margin: 20px auto; max-width: 500px; } #main-image { width: 100%; height: auto; border: 2px solid #ccc; border-radius: 5px; box-shadow: 2px 2px 10px rgba(0,0,0,0.1); } #thumbnails { margin-top: 10px; display: flex; justify-content: center; gap: 10px; } .thumbnail { width: 100px; height: auto; cursor: pointer; border: 2px solid #ccc; border-radius: 5px; transition: 0.3s; } .thumbnail:hover { border: 2px solid #777; }
サンプルコード
cursor: pointer;
でカーソルをポインタに変更し、クリックできることを示す。
jQueryの実装
jQueryを使用して画像切替を実装する
サムネイル画像をクリックするとメイン画像が切り替わる仕組みを実装します。
#該当コードのみ記載 $(document).ready(function() { $(".thumbnail").click(function() { let imageSrc = $(this).attr("src"); $("#main-image").attr("src", imageSrc); }); });
サンプルコード
コード | 各コードの機能 |
---|---|
$(document).ready(function() {...}) | ページの読み込みが完了したらスクリプトを実行 |
$(".thumbnail").click(function() {...}) | サムネイル画像をクリックした時の処理 |
let imageSrc = $(this).attr("src"); | クリックされたサムネイル画像のsrc属性を取得 |
$("#main-image").attr("src", imageSrc); | メイン画像のsrc属性を、クリックされたサムネイル画像のsrc属性に設定 |
【4-4】演習課題
演習課題05 :アコーディオン内のビューアー実装
途中で躓いたら、教材を振り返りながら進めてみましょう。
解き終わったら、
解き終わったら、
05_end
フォルダ内の解答例と見比べて、自分の実装を確認してみましょう。演習課題06:モーダル表示の拡張
途中で躓いたら、教材を振り返りながら進めてみましょう。
解き終わったら、
解き終わったら、
06_end
フォルダ内の解答例と見比べて、自分の実装を確認してみましょう。