検索フォームを表示する固定フッターメニューの作り方【HTML/CSS/JavaScript・サンプルコード付き】

フッター
無料ツール
固定フッターメニューを自由に作成

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

固定フッターメニュー作成ツールを使う
新しいタブで開きます

検索フォームを表示する固定フッターメニューの作り方

検索フォームを表示する固定フッターメニューの作り方を紹介します。このサンプルでは、画面下部に固定したフッターメニューの「検索」をクリックすると、フッターの上側に検索フォームを表示します。普段は検索フォームを隠しておき、必要なときだけ表示できるため、固定フッター周辺をすっきりした状態に保ちながら検索機能を配置できます。

固定フッターメニューには「ホーム」「検索」「お気に入り」「通知」「マイページ」の5項目を配置します。JavaScriptで検索ボタンのクリックを判定し、検索フォームへクラスを追加・削除して表示と非表示を切り替えます。同じ検索ボタンをもう一度クリックするとフォームを閉じることができ、検索フォームを表示している間は検索ボタンの色も切り替わります。

ECサイトの商品検索、会員サイトの記事検索、管理画面のデータ検索など、固定ナビゲーションからすぐに検索できる画面に利用できます。HTMLではメニュー名、リンク先、検索フォームのプレースホルダーなどを変更でき、CSSでは固定フッターの高さ、検索フォームの横幅、余白、角丸、色などを調整できます。固定フッターは画面幅いっぱいに表示し、スマートフォン・タブレット・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>

  <!-- ページ上部 -->
  <header class="footer-menu-search_header">

    <!-- タイトル -->
    <div class="footer-menu-search_title">
      検索フォーム
    </div>

    <!-- 説明文 -->
    <p class="footer-menu-search_description">
      フッターメニューの検索ボタンから検索フォームを表示できます。
    </p>

  </header>

  <!-- メインコンテンツ -->
  <main class="footer-menu-search_main">

    <!-- 説明ブロック -->
    <div class="footer-menu-search_card">

      <!-- 見出し -->
      <div class="footer-menu-search_heading">
        検索ボタンをクリック
      </div>

      <!-- 本文 -->
      <p class="footer-menu-search_text">
        画面下部にある「検索」をクリックすると、固定フッターの上側に検索フォームを表示します。
      </p>

    </div>

    <!-- 説明ブロック -->
    <div class="footer-menu-search_card">

      <!-- 見出し -->
      <div class="footer-menu-search_heading">
        もう一度クリックして閉じる
      </div>

      <!-- 本文 -->
      <p class="footer-menu-search_text">
        検索フォームを表示した状態でもう一度「検索」をクリックすると非表示になります。
      </p>

    </div>

  </main>

  <!-- 検索フォームパネル -->
  <div class="footer-menu-search_panel">

    <!-- 検索フォーム -->
    <form class="footer-menu-search_form">

      <!-- 検索キーワード入力欄 -->
      <input
        class="footer-menu-search_input"
        type="search"
        placeholder="キーワードを入力"
        aria-label="検索キーワード">

      <!-- 検索ボタン -->
      <button class="footer-menu-search_submit" type="submit">
        検索
      </button>

    </form>

  </div>

  <!-- 画面下部へ固定するフッターメニュー -->
  <nav class="footer-menu-search_nav">

    <!-- ホーム -->
    <a href="#" class="footer-menu-search_item">
      <svg viewBox="0 0 24 24" fill="none" aria-hidden="true">
        <path d="M3 10L12 3L21 10M6 10V20H18V10" stroke="currentColor" stroke-width="2" stroke-linecap="round"></path>
      </svg>
      <span class="footer-menu-search_label">ホーム</span>
    </a>

    <!-- 検索フォームを開閉するボタン -->
    <button type="button" class="footer-menu-search_button" aria-expanded="false">
      <svg viewBox="0 0 24 24" fill="none" aria-hidden="true">
        <circle cx="11" cy="11" r="6" stroke="currentColor" stroke-width="2"></circle>
        <path d="M16 16L21 21" stroke="currentColor" stroke-width="2" stroke-linecap="round"></path>
      </svg>
      <span class="footer-menu-search_label">検索</span>
    </button>

    <!-- お気に入り -->
    <a href="#" class="footer-menu-search_item">
      <svg viewBox="0 0 24 24" fill="none" aria-hidden="true">
        <path d="M12 20L5 13C3.5 11.5 3.5 9 5 7.5C6.5 6 9 6 10.5 7.5L12 9L13.5 7.5C15 6 17.5 6 19 7.5C20.5 9 20.5 11.5 19 13L12 20Z" stroke="currentColor" stroke-width="2" stroke-linejoin="round"></path>
      </svg>
      <span class="footer-menu-search_label">お気に入り</span>
    </a>

    <!-- 通知 -->
    <a href="#" class="footer-menu-search_item">
      <svg viewBox="0 0 24 24" fill="none" aria-hidden="true">
        <path d="M7 17H17L16 15V10C16 7.8 14.2 6 12 6C9.8 6 8 7.8 8 10V15L7 17Z" stroke="currentColor" stroke-width="2"></path>
        <path d="M10.5 19C10.8 19.6 11.3 20 12 20C12.7 20 13.2 19.6 13.5 19" stroke="currentColor" stroke-width="2" stroke-linecap="round"></path>
      </svg>
      <span class="footer-menu-search_label">通知</span>
    </a>

    <!-- マイページ -->
    <a href="#" class="footer-menu-search_item">
      <svg viewBox="0 0 24 24" fill="none" aria-hidden="true">
        <circle cx="12" cy="8" r="3" stroke="currentColor" stroke-width="2"></circle>
        <path d="M6 20C6 16.7 8.7 14 12 14C15.3 14 18 16.7 18 20" stroke="currentColor" stroke-width="2"></path>
      </svg>
      <span class="footer-menu-search_label">マイページ</span>
    </a>

  </nav>

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

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

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

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

ファイル構成と設置方法

このサンプルはHTML・CSS・JavaScriptの3ファイルで構成されています。HTMLで固定フッターメニューと検索フォームを作成し、CSSで画面下部への固定、検索フォームの表示状態、色やサイズなどを設定します。JavaScriptでは固定フッターの「検索」をクリックしたときに、検索フォームの表示と非表示を切り替えます。

固定フッターメニューには「ホーム」「検索」「お気に入り」「通知」「マイページ」の5項目を配置しています。固定フッターは画面幅いっぱいに表示され、5項目を同じ横幅で並べます。検索フォームは通常時には非表示で、検索ボタンをクリックしたときだけ固定フッターの上側へ表示されます。

外部ライブラリや外部データは使用していません。HTML・CSS・バニラJavaScriptだけで動作するため、3ファイルを同じフォルダへ配置してブラウザでindex.htmlを開くと動作を確認できます。

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

各ファイルの役割
index.htmlは固定フッターメニューと検索フォームを構成するファイルです。メニュー名、リンク先、SVGアイコン、検索入力欄のプレースホルダーなどを変更できます。

style.cssはページ全体、検索フォーム、固定フッターメニューのデザインを設定するファイルです。固定フッターの高さ、検索フォームの位置や余白、角丸、影、入力欄やボタンのサイズ、文字色、背景色などを変更できます。

script.jsは検索フォームの表示と非表示を切り替えるファイルです。「検索」をクリックするとis-openクラスを追加・削除し、検索フォームの表示状態を切り替えます。同時に検索ボタンのis-activeクラスとaria-expandedも切り替えます。

設置方法・使い方
sampleフォルダへindex.html、style.css、script.jsを同じ階層で配置してください。index.htmlからstyle.cssとscript.jsを読み込む構成になっているため、sample/index.htmlをブラウザで開くとそのまま動作を確認できます。

画面下部の「検索」をクリックすると、固定フッターメニューの上側に検索フォームが表示されます。表示した状態でもう一度「検索」をクリックすると検索フォームが閉じます。検索フォームを表示している間は、固定フッターの検索ボタンが青色になります。

実際のWebサイトで使用するときは、index.htmlにある各リンクのhref="#"を移動先のURLへ変更してください。検索フォームの送信先や検索処理はこのサンプルでは指定していないため、利用するサイトの検索仕様に合わせて設定してください。

カスタマイズできる内容
index.htmlでは「ホーム」「検索」「お気に入り」「通知」「マイページ」のメニュー名、各リンク先、SVGアイコン、検索フォームのプレースホルダー、検索ボタンの文字を変更できます。

style.cssでは固定フッターの高さ、検索フォームの表示位置、左右の余白、内側余白、角丸、影、入力欄と検索ボタンの間隔、文字サイズ、アイコンサイズ、通常時と選択時の色などを変更できます。script.jsでは検索ボタンをクリックしたときの表示・非表示処理を行っています。

数値調整
style.css
padding-bottom:76px;
固定フッターとページ内容が重ならないように確保する下側の余白です。固定フッターの高さを変更する場合は、この値も合わせて調整します。

height:76px;
固定フッターメニューの高さです。値を大きくするとフッターが高くなり、小さくすると低くなります。

right:16px;・left:16px;
検索フォームパネルと画面左右との間隔です。値を大きくすると検索フォームが狭くなり、小さくすると画面端まで広がります。

bottom:76px;
検索フォームパネルを画面下端から76px上へ配置します。固定フッターの高さと同じ値にすることで、検索フォームをフッターの上側へ表示しています。

padding:14px;
検索フォームパネルの内側余白です。値を大きくするとフォームとパネル外周との間隔が広がります。

border-radius:16px;
検索フォームパネルの角丸です。値を大きくすると丸みが強くなり、0にすると四角になります。

box-shadow:0 10px 24px ...
検索フォームパネルの影です。10pxは下方向の位置、24pxはぼかしの大きさです。値を大きくすると影の位置や広がりが大きくなります。

transform:translateY(8px);
非表示時の検索フォームを8px下へ移動します。値を大きくすると表示・非表示を切り替えたときの移動量が大きくなります。

transition:0.25s
検索フォームの表示状態が切り替わる時間です。0.25秒で変化し、値を大きくするとゆっくり、小さくすると速くなります。

gap:8px;
検索入力欄と検索ボタンの間隔です。値を大きくすると両方の間隔が広がります。

padding:12px;
検索入力欄の内側余白です。値を大きくすると入力欄の内側が広くなります。

border-radius:10px;
検索入力欄と検索ボタンの角丸です。値を大きくすると丸みが強くなります。

padding:0 18px;
検索ボタンの左右の内側余白です。18pxを大きくすると検索ボタンが横に広がります。

gap:6px;
固定フッターのSVGアイコンとメニュー名の間隔です。値を大きくするとアイコンと文字が離れます。

font-size:12px;
固定フッターのメニュー名の文字サイズです。値を大きくすると文字が大きくなります。

width:24px;・height:24px;
固定フッターで使用しているSVGアイコンの大きさです。値を大きくするとアイコンが大きくなります。

レスポンシブ対応
このサンプルはレスポンシブ対応です。固定フッターメニューにはwidth:100%;を設定し、5つの項目へflex:1;を指定しているため、画面幅に合わせて各項目の横幅が均等に変化します。

style.cssの@media (max-width:640px)では、画面幅640px以下になると固定フッターの高さを76pxから68pxへ変更します。検索フォームパネルは左右16pxから10px、内側余白は14pxから10pxへ縮小し、固定フッターの高さに合わせてbottom:68px;へ変更します。メニュー名は12pxから11px、SVGアイコンは24pxから22px、検索フォーム内の文字は13pxへ調整するため、スマートフォン・タブレット・PCで利用できます。


こちらもおすすめ


コメント