フォーカスで表示するポップオーバーを作る方法【HTML/CSS・サンプルコード付き】

ポップオーバー

フォーカスで表示するポップオーバーを作る方法

フォーカスで表示するポップオーバーを作る方法を紹介します。このサンプルでは、入力欄やボタンへフォーカスしたときに補足情報を表示するポップオーバーを実装します。クリックやTabキーで対象要素にフォーカスすると自動でポップオーバーが表示され、フォーカスが外れると非表示になるシンプルな動作です。

会員サイトのログインフォーム、お問い合わせ画面、管理画面の設定フォーム、ECサイトの住所入力フォームなどで、入力方法や注意事項を表示したい場面に適しています。操作中だけ必要な説明を表示できるため、画面をすっきり保ちながら利用者へ補足情報を分かりやすく伝えられます。キーボード操作でも表示できるため、アクセシビリティを意識したフォームにも活用できます。

タイトル、説明文、ボタンの文字、ポップオーバー内の文章はHTMLから変更できます。CSSでは横幅、余白、背景色、文字色、角丸、影、表示位置などを用途に合わせて調整できます。レスポンシブにも対応しているため、スマートフォン・タブレット・PCで利用しやすいフォーカス表示型ポップオーバーのサンプルとして活用できます。

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

デモ

フォーカスで表示するポップオーバー

ボタンをクリックするか、Tabキーでフォーカスするとポップオーバーが表示されます。

このポップオーバーはフォーカス中だけ表示されます。フォーカスが外れると自動で閉じます。

ボタンをクリック、またはTabキーでフォーカスするとポップオーバーが表示されます。ボタン以外をクリックすると自動で閉じます。

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

<!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="focus-popover_wrap">

    <!-- タイトル -->
    <div class="focus-popover_title">
      フォーカスで表示するポップオーバー
    </div>

    <!-- 説明文 -->
    <p class="focus-popover_text">
      ボタンをクリックするか、Tabキーでフォーカスするとポップオーバーが表示されます。
    </p>

    <!-- ボタンとポップオーバー -->
    <div class="focus-popover_area">

      <!-- フォーカス対象ボタン -->
      <button class="focus-popover_button">
        フォーカスしてください
      </button>

      <!-- ポップオーバー -->
      <div class="focus-popover_box">
        このポップオーバーはフォーカス中だけ表示されます。フォーカスが外れると自動で閉じます。
      </div>

    </div>

  </div>

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

ファイル構成と設置方法

このサンプルはHTMLとCSSの2ファイルで構成されています。HTMLではフォーカスすると表示されるポップオーバーの構造を作成し、CSSではボタンのデザインやポップオーバーの表示・非表示を制御しています。JavaScriptを使用せず、CSSの:focus疑似クラスだけで動作するため、シンプルな構成で導入できます。

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

各ファイルの役割
index.htmlはポップオーバー全体を構成するファイルです。タイトル、説明文、ボタンの文字、ポップオーバー内に表示する文章を変更できます。

style.cssはレイアウトや色、余白、角丸、影、ポップオーバーの表示位置、表示アニメーションを設定するファイルです。ボタンへフォーカスしたときだけポップオーバーを表示する処理もCSSで実現しています。

設置方法・使い方
sampleフォルダへindex.htmlとstyle.cssを配置し、同じ階層へ保存してください。その後、sample/index.htmlをブラウザで開くと利用できます。ボタンをクリックするか、Tabキーでボタンへフォーカスするとポップオーバーが表示され、フォーカスが外れると自動で閉じます。

カスタマイズできる内容
index.htmlではタイトル、説明文、ボタンの文字、ポップオーバー内の文章を用途に合わせて変更できます。案内文や入力補助、注意事項などさまざまな内容を表示できます。

style.cssでは全体の横幅、背景色、余白、角丸、ボタンの色やサイズ、ポップオーバーの横幅、表示位置、影、文字サイズ、アニメーション時間などを自由に変更できます。

数値調整
style.css
max-width:700px;
全体の最大横幅です。値を大きくすると横に広がり、小さくするとコンパクトになります。

padding:32px;
全体の内側余白です。値を大きくすると余白が広がり、小さくすると詰まった表示になります。

padding:14px 32px;
ボタンの内側余白です。上下・左右の値を変更するとボタンの大きさが変わります。

top:calc(100% + 18px);
ポップオーバーをボタンからどれだけ離して表示するかを指定しています。18pxを大きくすると間隔が広がり、小さくすると近付きます。

width:300px;
ポップオーバーの横幅です。値を大きくすると広くなり、小さくするとコンパクトになります。

border-radius:14px;
ポップオーバーの角丸です。値を大きくすると丸みが強くなり、0にすると四角になります。

transition:0.3s;
ポップオーバーの表示・非表示が切り替わる時間です。0.3秒で変化します。値を大きくするとゆっくり、小さくすると速く表示されます。

レスポンシブ対応
このサンプルはレスポンシブ対応です。style.cssのwidth:100%max-width:700pxにより画面幅に応じて全体が縮小されます。また、640px以下では内側余白を小さくし、ボタンとポップオーバーを横幅いっぱいに表示するため、スマートフォン・タブレット・PCで利用できます。


こちらもおすすめ


コメント