下側へ展開するドロップダウンメニューを作る方法【HTML/CSS/JavaScript・サンプルコード付き】

ドロップダウンメニュー
無料ツール
ドロップダウンメニューを自由に作成

ボタン・メニュー項目・サイズ・色・余白・枠線などを設定して、HTML・CSS・JavaScriptを自動生成できます。

ドロップダウンメニュー作成ツールを使う
新しいタブで開きます

下側へ展開するドロップダウンメニューを作る方法

下側へ展開するドロップダウンメニューを作る方法を紹介します。このサンプルでは、メニューボタンをクリックすると、そのボタンのすぐ下にリンク一覧が展開されるドロップダウンメニューをHTML・CSS・JavaScriptで実装します。もう一度ボタンをクリックするとメニューが閉じるシンプルな仕組みで、現在のページを大きく移動させずに複数のリンクをまとめて表示できます。

ヘッダーやナビゲーション、会員サイトのメニュー、管理画面の操作メニュー、ECサイトの商品カテゴリーなど、限られたスペースへ複数のリンクをまとめたい場面に利用できます。通常時はメニューを閉じておき、必要なときだけ下側へ表示できるため、画面をすっきり整理しながら利用者へ選択肢を提示できます。リンクへマウスを重ねると背景色が変わるため、どの項目を選んでいるのかも確認しやすくなっています。

HTMLではメニューボタンの文字や「ホーム」「サービス」「お問い合わせ」などのリンク内容を変更できます。CSSではメニュー全体の横幅、余白、ボタンの高さ、角丸、背景色、展開するリンク一覧の位置や影などを調整できます。JavaScriptではボタンをクリックするたびにis-openクラスを切り替え、メニューの表示・非表示を制御します。レスポンシブにも対応しているため、スマートフォン・タブレット・PCで利用できる下側展開型のドロップダウンメニューとして活用できます。

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

デモ

下側へ展開するドロップダウンメニュー

ボタンをクリックすると、リンク一覧がボタンの下側へ展開します。

「メニュー」をクリックすると、ボタンの下側へドロップダウンメニューが展開します。もう一度クリックすると閉じます。

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

<!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="bottom-dropdown-menu_wrap">

    <!-- タイトル -->
    <div class="bottom-dropdown-menu_title">
      下側へ展開するドロップダウンメニュー
    </div>

    <!-- 説明文 -->
    <p class="bottom-dropdown-menu_text">
      ボタンをクリックすると、リンク一覧がボタンの下側へ展開します。
    </p>

    <!-- メニューを中央へ配置するエリア -->
    <div class="bottom-dropdown-menu_group">

      <!-- 開閉ボタンとリンク一覧をまとめるエリア -->
      <div class="bottom-dropdown-menu_area">

        <!-- ドロップダウンメニューの開閉ボタン -->
        <button
          class="bottom-dropdown-menu_button"
          type="button"
          data-bottom-dropdown-menu-button="">
          メニュー

          <!-- 下向き矢印 -->
          <span class="bottom-dropdown-menu_arrow">
            ▼
          </span>

        </button>

        <!-- ボタンの下側へ展開するリンク一覧 -->
        <ul
          class="bottom-dropdown-menu_list"
          data-bottom-dropdown-menu-list="">

          <!-- ホームへのリンク -->
          <li>
            <a class="bottom-dropdown-menu_link" href="#">
              ホーム
            </a>
          </li>

          <!-- サービスへのリンク -->
          <li>
            <a class="bottom-dropdown-menu_link" href="#">
              サービス
            </a>
          </li>

          <!-- お問い合わせへのリンク -->
          <li>
            <a class="bottom-dropdown-menu_link" href="#">
              お問い合わせ
            </a>
          </li>

        </ul>

      </div>

    </div>

  </div>

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

</body>
</html>
コードをコピーする場合 使用するコードのタブを選び、「このタブをコピー」をクリックすると、現在表示中のコードをコピーできます。
サンプル一式を取得する場合 HTML・CSSなどすべてのファイルが必要な場合は、「サンプル一式をダウンロード」をクリックしてください。
Q ダウンロードしたけど、これをネット上で動かすにはどうするの?
A

Googleアカウントがあれば、InfinityFreeで無料サーバーを作成して、ダウンロードしたサンプルをネット上で動かせます。

InfinityFreeを初めて利用する場合は①から、すでにサーバーを作成している場合は②へ進んでください。

ファイル構成と設置方法

このサンプルはHTML・CSS・JavaScriptの3ファイルで構成されています。HTMLで開閉ボタンとリンク一覧を作成し、CSSの絶対配置を使用してリンク一覧をボタンの下側へ配置します。JavaScriptでは開閉ボタンをクリックしたときにis-openクラスを切り替え、下側へ配置したリンク一覧の表示・非表示を変更します。

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

各ファイルの役割
index.htmlはドロップダウンメニューのHTML構造を作るファイルです。「メニュー」の開閉ボタンと、「ホーム」「サービス」「お問い合わせ」の3つのリンクを配置しています。ボタンの文字、リンク名、href属性は用途に合わせて変更できます。

style.cssはドロップダウンメニューのデザインと展開位置を設定するファイルです。全体の横幅や余白、ボタンのサイズ、背景色、角丸、リンク一覧の横幅、余白、影などを設定します。リンク一覧にはposition:absolute;とtop:calc(100% + 10px);を指定し、開閉ボタンの下側へ表示しています。

script.jsはドロップダウンメニューを開閉するファイルです。開閉ボタンをクリックするとリンク一覧へis-openクラスを付け外しし、CSSのdisplay:none;とdisplay:block;を切り替えます。

設置方法・使い方
sampleフォルダへindex.html、style.css、script.jsを配置します。3つのファイルを同じ階層へ保存したあと、sample/index.htmlをブラウザで開いてください。index.htmlからstyle.cssとscript.jsを読み込む構成になっているため、追加のライブラリや外部サービスは必要ありません。

画面中央の「メニュー」をクリックすると、「ホーム」「サービス」「お問い合わせ」のリンク一覧がボタンの下側へ展開します。もう一度「メニュー」をクリックするとリンク一覧が閉じます。実際に使用する場合は、index.htmlの各href="#"を移動先のURLへ変更してください。

カスタマイズできる内容
index.htmlでは開閉ボタンの「メニュー」という文字や、リンク一覧の「ホーム」「サービス」「お問い合わせ」を変更できます。リンク先は各a要素のhref属性で設定できます。必要に応じてli要素とa要素を同じ構造で追加すると、リンク項目を増やせます。

style.cssではドロップダウンメニュー全体の横幅や余白、開閉ボタンの高さ、背景色、角丸、リンク一覧の位置、内側余白、角丸、影、リンクへマウスを重ねたときの背景色などを変更できます。

数値調整
style.css
max-width:700px;
ドロップダウンメニューを配置する全体エリアの最大横幅です。値を大きくすると全体が横に広がり、小さくするとコンパクトになります。

margin:40px auto;
全体の上下余白です。40pxを大きくすると上下の間隔が広がり、小さくすると狭くなります。

padding:32px;
全体の内側余白です。値を大きくすると内容と外枠の間隔が広がり、小さくすると狭くなります。

border-radius:18px;
全体の角丸です。値を大きくすると丸みが強くなり、0にすると四角になります。

font-size:22px;
タイトルの文字サイズです。値を大きくすると文字が大きくなり、小さくすると控えめになります。

margin:0 0 24px;
説明文の下側余白です。24pxを大きくすると開閉ボタンとの間隔が広がり、小さくすると狭くなります。

max-width:280px;
開閉ボタンとリンク一覧の最大横幅です。値を大きくするとメニューが横に広がり、小さくすると狭くなります。

min-height:52px;
開閉ボタンの最小高さです。値を大きくするとボタンが高くなり、小さくすると低くなります。

padding:14px 18px;
開閉ボタンの内側余白です。上下14pxを大きくするとボタンが高くなり、左右18pxを大きくすると文字とボタン端の間隔が広がります。

border-radius:10px;
開閉ボタンとリンク一覧の角丸です。値を大きくすると丸みが強くなり、0にすると四角になります。

margin-left:12px;
ボタン文字と矢印の間隔です。値を大きくすると間隔が広がります。

font-size:12px;
下向き矢印の大きさです。値を大きくすると矢印が大きくなります。

top:calc(100% + 10px);
開閉ボタンと下側へ展開するリンク一覧の間隔です。10pxを大きくするとボタンとリンク一覧の間隔が広がり、小さくすると近くなります。

z-index:10;
リンク一覧の重なり順です。値を大きくすると、同じ重なり条件にある他の要素より手前へ表示しやすくなります。

padding:8px;
リンク一覧の内側余白です。値を大きくすると外枠と各リンクの間隔が広がります。

box-shadow:0 10px 24px ...
リンク一覧の影です。10pxは影の下方向の位置、24pxはぼかしの大きさです。値を大きくすると影の位置や広がりが大きくなります。

padding:12px 14px;
各リンクの内側余白です。上下12pxを大きくするとリンクが高くなり、左右14pxを大きくすると文字と端の間隔が広がります。

border-radius:8px;
各リンクの角丸です。値を大きくするとマウスオーバー時の背景に丸みが強くなります。

レスポンシブ対応
このサンプルはレスポンシブ対応です。style.cssで全体とメニューエリアにwidth:100%を指定し、それぞれmax-width:700pxとmax-width:280pxで最大横幅を制限しています。そのため、画面が狭くなると利用できる横幅に合わせて縮小します。

また、画面幅640px以下ではメディアクエリによって全体の内側余白をpadding:24px 18px;へ変更しています。スマートフォンでは左右の余白を抑えながら、タブレットやPCでは余裕のあるレイアウトで表示できます。


こちらもおすすめ


コメント