ドロワーメニュー内にカルーセルを表示する方法【HTML/CSS/JavaScript・サンプルコード付き】

カルーセル

ドロワーメニュー内にカルーセルを表示する方法

ドロワーメニュー内にカルーセルを表示する方法を紹介します。このサンプルでは、通常のメニュー項目に加えて、画像やお知らせをカルーセル形式で表示できます。HTML・CSS・JavaScriptだけで実装でき、限られたスペースでも複数のコンテンツを見やすく紹介できます。

ドロワーメニューをナビゲーションとして利用するだけでなく、おすすめ商品、人気記事、新着情報、キャンペーンなどを目立たせたい場合にも便利です。左右の矢印やドットナビでスライドを切り替えられるため、情報量を増やしても見やすいレイアウトを維持できます。

メニュー項目、カルーセルの画像や文章、リンク先URL、ドロワーメニューの横幅、背景色、余白、角丸、影、表示アニメーション速度などを自由に変更できます。画面幅640px以下ではスマートフォン向けレイアウトへ切り替わるため、スマートフォン・タブレット・PCで利用できます。

コードについて 本記事のコードはサンプルコードです。ご利用前に必ず動作確認を行ってください。
免責事項 本コードの利用により発生した損害について、当サイトは一切の責任を負いません。

デモ

「メニューを開く」をクリックすると、通常のメニュー項目とカルーセルを配置したドロワーメニューが表示されます。「前へ」「次へ」ボタンまたは丸いボタンをクリックすると、おすすめ情報が切り替わります。

コードをコピーして使おう!

<!DOCTYPE html>
<html lang="ja">

<head>

  <!-- 文字コードをUTF-8へ設定する -->
  <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>

  <!-- ページの案内エリア -->
  <main class="drawer-menu-carousel_wrap">

    <!-- タイトル -->
    <h1 class="drawer-menu-carousel_title">
      ドロワーメニュー内にカルーセルを表示
    </h1>

    <!-- 説明文 -->
    <p class="drawer-menu-carousel_text">
      ドロワーメニュー内へ画像カルーセルを表示できます。
    </p>

    <!-- ドロワーメニューを開くボタン -->
    <button
      class="drawer-menu-carousel_open"
      type="button"
      data-drawer-menu-carousel-open>
      メニューを開く
    </button>

  </main>

  <!-- 背景オーバーレイ -->
  <div
    class="drawer-menu-carousel_overlay"
    data-drawer-menu-carousel-overlay
    aria-hidden="true">

    <!-- ドロワーメニュー本体 -->
    <aside
      class="drawer-menu-carousel_drawer"
      role="dialog"
      aria-modal="true"
      aria-labelledby="drawer-menu-carousel-title">

      <!-- ドロワーメニュータイトル -->
      <h2
        class="drawer-menu-carousel_drawer-title"
        id="drawer-menu-carousel-title">
        メニュー
      </h2>

      <!-- メニュー一覧 -->
      <nav
        class="drawer-menu-carousel_nav"
        aria-label="メインメニュー">

        <!--
          href="#" を実際のURLへ変更してください。
          表示するメニュー名も自由に変更できます。
        -->
        <a href="#">ホーム</a>

        <a href="#">サービス</a>

        <a href="#">お知らせ</a>

        <a href="#">お問い合わせ</a>

      </nav>

      <!-- カルーセル見出し -->
      <h3 class="drawer-menu-carousel_heading">
        おすすめ情報
      </h3>

      <!-- カルーセル -->
      <div class="drawer-menu-carousel_carousel">

        <div
          class="drawer-menu-carousel_track"
          data-drawer-menu-carousel-track>

          <!-- =========================
               スライド1
          ========================== -->
          <article class="drawer-menu-carousel_slide">

            <!--
              sample/images/slide1.jpg
              ご自身で用意した画像へ差し替えてください。
            -->
            <img
              src="images/slide1.jpg"
              alt="おすすめ画像1">

            <div class="drawer-menu-carousel_content">

              <h4>おすすめ記事</h4>

              <p>
                おすすめ記事やサービスを紹介できます。
              </p>

            </div>

          </article>

          <!-- =========================
               スライド2
          ========================== -->
          <article class="drawer-menu-carousel_slide">

            <img
              src="images/slide2.jpg"
              alt="おすすめ画像2">

            <div class="drawer-menu-carousel_content">

              <h4>新着情報</h4>

              <p>
                新着情報や更新情報を掲載できます。
              </p>

            </div>

          </article>

          <!-- =========================
               スライド3
          ========================== -->
          <article class="drawer-menu-carousel_slide">

            <img
              src="images/slide3.jpg"
              alt="おすすめ画像3">

            <div class="drawer-menu-carousel_content">

              <h4>キャンペーン</h4>

              <p>
                キャンペーンやバナーを掲載できます。
              </p>

            </div>

          </article>

        </div>

      </div>

      <!-- 前後ボタン -->
      <div class="drawer-menu-carousel_controls">

        <button
          type="button"
          class="drawer-menu-carousel_prev"
          data-drawer-menu-carousel-prev>
          前へ
        </button>

        <button
          type="button"
          class="drawer-menu-carousel_next"
          data-drawer-menu-carousel-next>
          次へ
        </button>

      </div>

      <!-- インジケーター -->
      <div class="drawer-menu-carousel_dots">

        <button
          class="drawer-menu-carousel_dot is-active"
          type="button"
          data-drawer-menu-carousel-dot="0">
        </button>

        <button
          class="drawer-menu-carousel_dot"
          type="button"
          data-drawer-menu-carousel-dot="1">
        </button>

        <button
          class="drawer-menu-carousel_dot"
          type="button"
          data-drawer-menu-carousel-dot="2">
        </button>

      </div>

      <!-- 閉じるボタン -->
      <button
        class="drawer-menu-carousel_close"
        type="button"
        data-drawer-menu-carousel-close>
        閉じる
      </button>

    </aside>

  </div>

  <!-- JavaScriptを読み込む -->
  <script src="script.js"></script>

</body>

</html>

ファイル構成と設置方法

このサンプルはHTML・CSS・JavaScriptの3ファイルで構成されています。ドロワーメニューを開くと、通常のメニューと画像カルーセルを同時に表示できます。HTMLでレイアウトを作成し、CSSでドロワーメニューとカルーセルのデザインを設定、JavaScriptでドロワーメニューの開閉とカルーセルの切り替えを行っています。

カルーセルには画像と説明文を表示できるため、おすすめ記事、新着情報、キャンペーン、商品紹介などを目立たせることができます。メニュー操作とコンテンツ紹介を1つのドロワーメニューへまとめられるため、情報量の多いサイトでも使いやすい構成です。

メニュー項目、画像、説明文、リンク先URL、ドロワーメニューの横幅、カルーセル画像の高さ、ボタン色、余白、影、表示アニメーションの速度などを自由に変更できます。画面幅640px以下ではスマートフォン向けレイアウトへ切り替わるため、スマートフォン・タブレット・PCで利用できます。

sample/
├── index.html
├── style.css
├── script.js
└── images/
    ├── slide1.jpg
    ├── slide2.jpg
    └── slide3.jpg

各ファイルの役割
index.html
ドロワーメニュー全体の構造を定義しています。メニュー項目、画像、見出し、説明文、リンク先URLを編集できます。カルーセルへ画像を追加したい場合は、スライドとインジケーターを追加してください。

style.css
ドロワーメニュー、カルーセル、画像、前へ・次へボタン、インジケーター、背景オーバーレイ、表示アニメーション、レスポンシブ表示を設定しています。配色、横幅、画像サイズ、余白、角丸、影、表示速度などを変更できます。

script.js
ドロワーメニューの開閉処理とカルーセルの切り替え処理を行っています。前へ・次へボタンやインジケーターの動作を変更できます。

imagesフォルダ
カルーセルで表示する画像を保存します。slide1.jpgslide2.jpgslide3.jpgをご自身で用意した画像へ差し替えるだけで利用できます。

設置方法・使い方
sampleフォルダ内へindex.htmlstyle.cssscript.jsを配置し、画像はsample/images/へ保存してください。

sample/index.htmlをブラウザで開くとサンプルを確認できます。「メニューを開く」をクリックするとドロワーメニューが表示され、前へ・次へボタンまたは丸いインジケーターをクリックするとカルーセルを切り替えられます。

カスタマイズできる内容
index.htmlでは、メニュー項目、画像、見出し、説明文、リンク先URL、ボタンの文字を変更できます。画像やスライドを追加・削除してカルーセルの内容を自由に編集できます。

style.cssでは、ドロワーメニューの横幅、画像の高さ、ボタン色、背景色、文字サイズ、余白、角丸、影、背景オーバーレイの暗さ、アニメーション速度を変更できます。

script.jsでは、カルーセルの切り替え処理やドロワーメニューの開閉処理を変更できます。

数値調整
style.csswidth:380px;はドロワーメニューの横幅です。値を大きくすると広くなり、小さくすると狭くなります。

height:170px;はカルーセル画像の高さです。値を大きくすると画像が高くなり、小さくするとコンパクトになります。

padding:24px;はドロワーメニュー内側の余白です。値を変更すると表示間隔が変わります。

background:rgba(0,0,0,.45);.45は背景の暗さです。値を大きくすると暗くなり、小さくすると背景が透けます。

animation:drawer-menu-carousel-slide .35s ease forwards;.35sはドロワーメニューの表示アニメーション時間です。値を大きくするとゆっくり表示され、小さくすると速く表示されます。

transition:transform .35s ease;.35sはカルーセルの切り替え速度です。値を大きくするとゆっくり、小さくすると速く切り替わります。

レスポンシブ対応
style.cssではwidth:100%max-width:100%overflow-y:auto@media screen and (max-width:640px)を使用してレスポンシブ対応しています。

スマートフォンではドロワーメニューを画面幅いっぱいに表示し、カルーセル画像やボタンも画面サイズに合わせて調整されます。スマートフォン・タブレット・PCで快適に利用できます。


こちらもおすすめ


コメント