複数画像をドロワーメニューで表示する方法
複数画像をドロワーメニューで表示する方法を紹介します。このサンプルでは、「画像を表示」ボタンをクリックすると画面左側からドロワーメニューが開き、その中に複数の画像を一覧表示できます。HTMLで画像とドロワーメニューの構造を作成し、CSSで画像一覧のレイアウトや開閉アニメーションを設定、JavaScriptで表示と非表示を制御します。
画像は2列のギャラリー形式で配置され、ドロワーメニュー内を縦にスクロールして確認できます。作品紹介、商品画像、施工事例、写真一覧など、通常のページ領域を大きく使わずに複数画像を見せたい場面で利用できます。
ドロワーメニューは「閉じる」ボタンまたは背景部分をクリックすると閉じられます。画像のURLや代替テキスト、表示枚数はHTMLで変更でき、ドロワーメニューの横幅、画像間の余白、角丸、影、表示速度などはCSSで調整できます。
本記事のコードはサンプルコードです。ご利用前に必ず動作確認を行ってください。
免責事項
本記事のコードを利用したことによる損害について、当サイトでは責任を負いかねます。必要に応じて環境に合わせて調整してください。
デモ
「ギャラリーを表示」をクリックすると、ドロワーメニュー内へ複数画像を一覧表示できます。画像が多い場合はドロワーメニュー内をスクロールして確認できます。
コードをコピーして使おう!
<!DOCTYPE html>
<html lang="ja">
<head>
<!-- 文字コード -->
<meta charset="UTF-8">
<!-- スマートフォン表示対応 -->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- ページタイトル -->
<title>複数画像をドロワーメニューで表示する方法</title>
<!-- CSSファイルを読み込み -->
<link rel="stylesheet" href="style.css">
</head>
<body>
<!-- 案内エリア -->
<div class="multiple-images-drawer-menu_wrap">
<!-- タイトル -->
<div class="multiple-images-drawer-menu_title">
複数画像をドロワーメニューで表示する方法
</div>
<!-- 説明文 -->
<p class="multiple-images-drawer-menu_text">
ボタンをクリックすると、ドロワーメニュー内へ複数画像を一覧表示できます。
</p>
<!-- ドロワーメニューを開くボタン -->
<button
class="multiple-images-drawer-menu_open"
type="button"
data-drawer-open>
ギャラリーを表示
</button>
</div>
<!-- ドロワーメニュー表示時の背景 -->
<div
class="multiple-images-drawer-menu_overlay"
data-drawer-overlay
aria-hidden="true">
<!-- ドロワーメニュー本体 -->
<div
class="multiple-images-drawer-menu_drawer"
role="dialog"
aria-modal="true"
aria-labelledby="multiple-images-drawer-menu-title">
<!-- ドロワーメニューのタイトル -->
<div
class="multiple-images-drawer-menu_drawer-title"
id="multiple-images-drawer-menu-title">
画像ギャラリー
</div>
<!-- 説明文 -->
<p class="multiple-images-drawer-menu_drawer-text">
ドロワーメニュー内で複数画像を一覧表示できます。
</p>
<!-- 画像一覧 -->
<div class="multiple-images-drawer-menu_gallery">
<!-- 1枚目の画像
src="" の "" の中へ表示したい画像URLを入力する
alt="" の "" の中へ画像の内容が分かる説明を書く -->
<div class="multiple-images-drawer-menu_image">
<img
src="https://picsum.photos/seed/gallery1/600/400"
alt="サンプル画像1">
</div>
<!-- 2枚目の画像
src="" の "" の中へ表示したい画像URLを入力する
alt="" の "" の中へ画像の内容が分かる説明を書く -->
<div class="multiple-images-drawer-menu_image">
<img
src="https://picsum.photos/seed/gallery2/600/400"
alt="サンプル画像2">
</div>
<!-- 3枚目の画像
src="" の "" の中へ表示したい画像URLを入力する
alt="" の "" の中へ画像の内容が分かる説明を書く -->
<div class="multiple-images-drawer-menu_image">
<img
src="https://picsum.photos/seed/gallery3/600/400"
alt="サンプル画像3">
</div>
<!-- 4枚目の画像
src="" の "" の中へ表示したい画像URLを入力する
alt="" の "" の中へ画像の内容が分かる説明を書く -->
<div class="multiple-images-drawer-menu_image">
<img
src="https://picsum.photos/seed/gallery4/600/400"
alt="サンプル画像4">
</div>
<!-- 5枚目の画像
src="" の "" の中へ表示したい画像URLを入力する
alt="" の "" の中へ画像の内容が分かる説明を書く -->
<div class="multiple-images-drawer-menu_image">
<img
src="https://picsum.photos/seed/gallery5/600/400"
alt="サンプル画像5">
</div>
<!-- 6枚目の画像
src="" の "" の中へ表示したい画像URLを入力する
alt="" の "" の中へ画像の内容が分かる説明を書く -->
<div class="multiple-images-drawer-menu_image">
<img
src="https://picsum.photos/seed/gallery6/600/400"
alt="サンプル画像6">
</div>
</div>
<!-- 閉じるボタン -->
<button
class="multiple-images-drawer-menu_close"
type="button"
data-drawer-close>
閉じる
</button>
</div>
</div>
<!-- JavaScriptファイルを読み込み -->
<script src="script.js"></script>
</body>
</html>
ファイル構成と設置方法
このサンプルはHTML・CSS・JavaScriptの3ファイルで構成されており、「ギャラリーを表示」ボタンをクリックすると、画面左側から複数画像を表示するドロワーメニューが開きます。HTMLで画像一覧やボタンを配置し、CSSで画像ギャラリーとドロワーメニューのデザインを設定、JavaScriptで表示と非表示を制御しています。
サンプルでは6枚の画像を2列で表示しています。各画像はindex.html内のimgタグで設定しているため、src属性の画像URLとalt属性の説明文を書き換えることで、利用したい画像へ変更できます。
画像がドロワーメニューの高さに収まらない場合は、ドロワーメニュー内を縦にスクロールして確認できます。HTML・CSS・JavaScriptを分離しているため、画像の変更や追加、表示列数、余白、画像サイズ、ドロワーメニューの横幅などを用途に合わせて編集できます。
sample/
├── index.html
├── style.css
└── script.js
各ファイルの役割
index.html
案内エリア、ドロワーメニュー、画像一覧、開くボタン、閉じるボタンを配置しています。表示する画像を変更する場合は、各imgタグのsrc属性へ画像URLを設定し、alt属性へ画像内容を表す説明文を設定します。画像を追加または削除すると、ドロワーメニュー内に表示される画像枚数が変わります。
style.css
ページ全体、案内エリア、ドロワーメニュー、画像一覧、ボタン、表示アニメーション、レスポンシブ表示を設定しています。ドロワーメニューの横幅、画像の高さ、表示列数、画像同士の間隔、余白、角丸、影、色などを変更できます。
script.js
「ギャラリーを表示」ボタンでドロワーメニューを開く処理、「閉じる」ボタンで閉じる処理、背景部分をクリックした場合に閉じる処理を管理しています。
設置方法・使い方
sampleフォルダへindex.html、style.css、script.jsを配置します。3つのファイルは同じ階層へ保存してください。準備ができたらsample/index.htmlをブラウザで開き、「ギャラリーを表示」ボタンをクリックすると動作を確認できます。
表示する画像を変更する場合は、index.html内にある次の部分を編集します。
src="https://picsum.photos/seed/gallery1/600/400"
alt="サンプル画像1"
src属性のURLを表示したい画像URLへ変更し、alt属性をその画像の内容が分かる説明文へ変更します。例えば風景画像へ変更する場合は、次のように設定します。
src="https://example.com/images/landscape.jpg"
alt="山と湖が写った風景"
2枚目以降も同じように、それぞれのimgタグにあるsrc属性とalt属性を書き換えてください。
カスタマイズできる内容
index.htmlでは、案内エリアのタイトル、説明文、ボタンの文字、ドロワーメニュー内のタイトル、説明文、画像URL、画像の代替テキスト、画像枚数を変更できます。
画像を追加する場合は、multiple-images-drawer-menu_imageクラスを付けた画像要素一式を、multiple-images-drawer-menu_gallery内へ追加します。画像を削除する場合は、不要なmultiple-images-drawer-menu_image要素を削除します。追加した画像にも、表示する画像URLをsrc属性へ設定し、画像内容を表す文章をalt属性へ設定してください。
style.cssでは、案内エリアとドロワーメニューの背景色、文字色、横幅、余白、角丸、影、画像サイズ、表示列数、画像同士の間隔、ボタンの色、表示アニメーションを変更できます。script.jsでは、ドロワーメニューを開く処理と閉じる処理を変更できます。
数値調整
style.cssのwidth:420pxはドロワーメニューの横幅です。値を大きくすると横幅が広がり、小さくすると狭くなります。
grid-template-columns:repeat(2,minmax(0,1fr))の2は画像の表示列数です。3へ変更すると3列、1へ変更すると1列で表示されます。
gap:12pxは画像同士の間隔です。値を大きくすると間隔が広がり、小さくすると狭くなります。
height:140pxはPC表示時の画像の高さです。値を大きくすると画像が高くなり、小さくすると低くなります。スマートフォン表示ではメディアクエリ内のheight:180pxで画像の高さを設定しています。
border-radius:12pxは画像の角丸です。値を大きくすると丸みが強くなり、0へ変更すると角丸がなくなります。
animation:multiple-images-drawer-menu-slide .35s ease forwardsの.35sはドロワーメニューの表示時間です。値を大きくするとゆっくり表示され、小さくすると速く表示されます。
レスポンシブ対応
style.cssではwidth:100%、max-width、overflow-y:auto、@media screen and (max-width:640px)を使用してレスポンシブ対応しています。PCとタブレットでは画像を2列で表示し、画面幅640px以下では画像を1列表示へ切り替えます。
スマートフォンではドロワーメニューを画面幅いっぱいに表示し、案内エリアの余白とドロワーメニュー内の余白を縮小します。スマートフォン・タブレット・PCで画面幅に合わせて表示でき、画像が多い場合はドロワーメニュー内を縦にスクロールできます。
コメント