フェードイン・フェードアウトするドロワーメニューの作り方【HTML/CSS/JavaScript・サンプルコード付き】

ドロワーメニュー

フェードイン・フェードアウトするドロワーメニューの作り方

フェードイン・フェードアウトするドロワーメニューの作り方を紹介します。「メニューを開く」ボタンをクリックすると、ドロワーメニューが透明な状態から徐々に表示されます。閉じる操作を行うと、反対に透明になりながら非表示になります。

このサンプルはHTML・CSS・JavaScriptだけで動作します。CSSのopacityとvisibilityを使用して表示状態を切り替え、transitionによってフェードアニメーションを加えています。閉じるボタン、背景部分、またはメニュー項目をクリックするとドロワーメニューを閉じられます。

サービスサイト、会員ページ、管理画面、キャンペーンページなど、強いスライド移動を使わずにメニューを自然に表示したい場面で利用できます。フェード速度、背景の暗さ、メニューの横幅、色、余白、角丸、影、メニュー項目はコード内で変更できます。

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

デモ

フェードするドロワーメニュー

「メニューを開く」をクリックすると、ドロワーメニューが徐々に表示されます。

「メニューを開く」をクリックするとフェードインで表示されます。閉じるボタン、背景部分、またはメニュー項目をクリックするとフェードアウトで閉じます。

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

<!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>

  <!-- ドロワーメニューを開く操作エリア -->
  <main class="fade-drawer-menu_wrap">

    <!-- 操作エリアのタイトル -->
    <div class="fade-drawer-menu_title">
      フェードするドロワーメニュー
    </div>

    <!-- 操作エリアの説明文 -->
    <p class="fade-drawer-menu_text">
      「メニューを開く」をクリックすると、ドロワーメニューが徐々に表示されます。
    </p>

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

  </main>

  <!-- ドロワーメニュー表示中の背景 -->
  <div
    class="fade-drawer-menu_overlay"
    data-fade-drawer-menu-overlay>
  </div>

  <!-- ドロワーメニュー本体 -->
  <aside
    class="fade-drawer-menu_drawer"
    data-fade-drawer-menu-drawer
    aria-hidden="true">

    <!-- ドロワーメニュー上部 -->
    <div class="fade-drawer-menu_header">

      <!-- ドロワーメニューのタイトル -->
      <div class="fade-drawer-menu_heading">
        メニュー
      </div>

      <!-- ドロワーメニューを閉じるボタン -->
      <button
        class="fade-drawer-menu_close"
        type="button"
        data-fade-drawer-menu-close
        aria-label="閉じる">
      </button>

    </div>

    <!-- ナビゲーションメニュー -->
    <nav
      class="fade-drawer-menu_nav"
      aria-label="メインメニュー">

      <a
        class="fade-drawer-menu_link"
        href="#home"
        data-fade-drawer-menu-link>
        ホーム
      </a>

      <a
        class="fade-drawer-menu_link"
        href="#service"
        data-fade-drawer-menu-link>
        サービス
      </a>

      <a
        class="fade-drawer-menu_link"
        href="#news"
        data-fade-drawer-menu-link>
        お知らせ
      </a>

      <a
        class="fade-drawer-menu_link"
        href="#contact"
        data-fade-drawer-menu-link>
        お問い合わせ
      </a>

    </nav>

  </aside>

  <!-- JavaScriptファイルを読み込み -->
  <script src="script.js"></script>

</body>
</html>

ファイル構成と設置方法

このサンプルは、HTML・CSS・JavaScriptの3ファイルで構成されています。HTMLでドロワーメニュー本体と開閉ボタンを配置し、CSSのopacity・visibility・transitionを使ってフェードイン・フェードアウトを実装しています。JavaScriptでは、ボタン操作に応じて表示用クラスを追加・削除します。

ドロワーメニューは画面左側へ固定されていますが、横方向へ移動せず、透明な状態から徐々に表示されます。閉じる操作では反対に透明になりながら非表示になります。背景のオーバーレイも同じ時間でフェードするため、メニューと背景が自然に切り替わります。

メニュー項目や文章はindex.html、色や横幅、余白、フェード時間はstyle.cssで変更できます。開くボタン、閉じるボタン、背景部分、メニュー項目による開閉処理はscript.jsにまとめられています。

sample/
├── index.html
├── style.css
└── script.js

各ファイルの役割
index.html
操作エリア、メニューを開くボタン、オーバーレイ、ドロワーメニュー本体、閉じるボタン、ナビゲーション項目を配置しています。タイトル、説明文、メニュー名、リンク先を変更すると表示内容が変わります。

style.css
ページ全体、操作エリア、ボタン、オーバーレイ、ドロワーメニュー、閉じるボタン、ナビゲーションのデザインを設定しています。opacityとvisibilityを変更することで表示状態を切り替え、transitionによってフェードアニメーションを実現しています。

script.js
開くボタン、閉じるボタン、オーバーレイ、メニューリンクを取得し、クリック時にis-activeクラスを追加・削除します。aria-hiddenも同時に変更し、ドロワーメニューの表示状態を管理しています。

設置方法・使い方
sampleフォルダ内へindex.html、style.css、script.jsを配置します。3ファイルは同じ階層に置いてください。sample/index.htmlをブラウザで開くと動作を確認できます。

「メニューを開く」をクリックすると、ドロワーメニューと背景がフェードインします。閉じるボタン、背景部分、またはメニュー項目をクリックするとフェードアウトします。

カスタマイズできる内容
index.htmlでは、操作エリアのタイトルと説明文、ドロワーメニューのタイトル、ホーム・サービス・お知らせ・お問い合わせの項目名とリンク先を変更できます。

style.cssでは、操作エリアやボタンの色、ドロワーメニューの横幅、背景色、文字色、余白、角丸、影を変更できます。フェード速度はオーバーレイとドロワーメニューに設定されているtransitionで調整できます。

script.jsでは、どのボタンやリンクでドロワーメニューを開閉するかを変更できます。開閉時に使用するis-activeクラスは、style.cssの表示状態と対応しています。

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

style.css
max-width:85%;
画面幅に対するドロワーメニューの最大幅です。小さい画面でメニューが画面外へはみ出すことを防ぎます。

style.css
opacity .35s
0.35秒でドロワーメニューとオーバーレイがフェードします。値を大きくするとゆっくり、小さくすると速く切り替わります。

style.css
background:rgba(15,23,42,.6);
0.6はオーバーレイの不透明度です。値を大きくすると背景が暗くなり、小さくすると明るく見えます。

style.css
padding:28px 24px;
ドロワーメニュー内側の上下・左右の余白です。値を変更するとタイトルやメニュー項目の配置間隔が変わります。

レスポンシブ対応
style.cssのwidth:100%、max-width:700px、max-width:85%を使い、画面幅に合わせて操作エリアとドロワーメニューが縮小される構成です。

画面幅640px以下ではmedia queryによってbody、操作エリア、ドロワーメニューの余白を小さくしています。スマートフォン・タブレット・PCで利用できます。



コメント