複数画像をドロワーメニューで表示する方法【HTML/CSS/JavaScript・サンプルコード付き】

ドロワーメニュー

複数画像をドロワーメニューで表示する方法

複数画像をドロワーメニューで表示する方法を紹介します。このサンプルでは、「画像を表示」ボタンをクリックすると画面左側からドロワーメニューが開き、その中に複数の画像を一覧表示できます。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.htmlstyle.cssscript.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.csswidth: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-widthoverflow-y:auto@media screen and (max-width:640px)を使用してレスポンシブ対応しています。PCとタブレットでは画像を2列で表示し、画面幅640px以下では画像を1列表示へ切り替えます。

スマートフォンではドロワーメニューを画面幅いっぱいに表示し、案内エリアの余白とドロワーメニュー内の余白を縮小します。スマートフォン・タブレット・PCで画面幅に合わせて表示でき、画像が多い場合はドロワーメニュー内を縦にスクロールできます。



コメント