Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【HTML Living Standard】popover属性の使い方

popover属性の使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

popoverプロパティは、HTML要素にポップオーバー機能を持たせるための設定情報を保持するプロパティです。HTML Living Standardで導入されたグローバル属性の一つとして、この属性を持つ要素は、他のコンテンツの上に一時的に表示されるUI(ユーザーインターフェース)要素、例えばツールチップ、メニュー、ダイアログ、通知などの「ポップオーバー」として扱われます。

通常、この属性が付与された要素は初期状態では非表示であり、ユーザーのアクションやJavaScriptによる制御によって表示・非表示が切り替わります。主な使用方法としては、ポップオーバーとなる要素にid属性を指定し、そのid値を、ポップオーバーの表示を制御する別の要素(例えばボタンなど)のpopovertarget属性に設定することで、簡単に連携させることができます。

popover属性は値を持つことができ、automanualの2種類があります。popover="auto"と設定した場合、ポップオーバーは、Escキーの押下やポップオーバーの外側をクリックするなどの操作によって自動的に閉じることができます。一方、popover="manual"と設定した場合は、表示・非表示の制御を完全にJavaScriptで行う必要があり、自動で閉じる機能は提供されません。

この属性を利用することで、開発者は複雑なスクリプトを記述することなく、アクセシビリティを考慮したポップオーバーUIを効率的に実装し、ユーザーにより良い操作体験を提供することが可能になります。

公式リファレンス: HTML popover global attribute

構文(syntax)

1<div popover></div>

引数(parameters)

引数なし

引数はありません

戻り値(return)

戻り値なし

戻り値はありません

サンプルコード

HTML Popover API でポップオーバーを表示する

1<!DOCTYPE html>
2<html lang="ja">
3<head>
4    <meta charset="UTF-8">
5    <meta name="viewport" content="width=device-width, initial-scale=1.0">
6    <title>HTML Popover API サンプル</title>
7    <style>
8        /* ポップオーバーの基本的なスタイル設定 */
9        #myPopover {
10            border: 1px solid #ccc;
11            padding: 15px;
12            background-color: #f9f9f9;
13            box-shadow: 2px 2px 8px rgba(0,0,0,0.2);
14            border-radius: 5px;
15            max-width: 300px;
16            /* popover属性が指定された要素はデフォルトで非表示になるため、
17               display: none; などのスタイルは不要です。 */
18        }
19    </style>
20</head>
21<body>
22    <h1>ポップオーバー API の基本</h1>
23
24    <!--
25        popovertarget 属性を持つボタン。
26        このボタンをクリックすると、指定されたIDを持つポップオーバーが表示/非表示されます。
27        popovertargetaction が指定されていない場合、デフォルトで "toggle" (切り替え) になります。
28    -->
29    <button popovertarget="myPopover">詳細情報を表示</button>
30
31    <!--
32        popover 属性が指定された要素は、ポップオーバーとして機能します。
33        デフォルトで非表示になり、popovertarget 属性を持つ要素によって操作されます。
34        "auto" または "manual" の値を指定できますが、値なしの場合は "auto" と見なされます。
35        "auto" の場合、Escキーやポップオーバーの外側をクリックすることで閉じます。
36    -->
37    <div id="myPopover" popover>
38        <h2>製品情報</h2>
39        <p>この製品は、最新の技術を駆使して開発されました。環境に優しく、高性能です。</p>
40        <p>ご質問があれば、お気軽にお問い合わせください。</p>
41        <!--
42            ポップオーバー内部に、閉じるためのボタンを設置することも可能です。
43            popovertargetaction="hide" を指定することで、明示的にポップオーバーを非表示にします。
44        -->
45        <button popovertarget="myPopover" popovertargetaction="hide">閉じる</button>
46    </div>
47
48</body>
49</html>

HTMLのpopover属性は、Webページ上で一時的に表示されるコンテンツを簡単に実装するためのグローバル属性です。この属性を持つ要素は、デフォルトで非表示のポップオーバーとなり、特定の操作で表示・非表示が切り替わるようになります。

サンプルコードの<div id="myPopover" popover>がポップオーバーコンテンツを定義しており、初期状態で非表示です。<button popovertarget="myPopover">のようにpopovertarget属性を持つ要素は、その値にポップオーバーのIDを指定することで、クリックによる表示・非表示の切り替えを可能にします。

ポップオーバー内の<button popovertarget="myPopover" popovertargetaction="hide">は、popovertargetaction="hide"で明示的に閉じます。popover属性に値がないかpopover="auto"の場合、ポップオーバーの外側クリックやEscキーでも自動で閉じます。

popover属性自体に引数や戻り値はなく、要素に特定の機能と振る舞いを付与する役割を果たします。

HTMLのpopover属性は、要素をポップオーバーとして定義し、デフォルトで非表示にします。表示・非表示の制御には、popovertarget属性を持つボタンなどを利用し、その値には対象ポップオーバーのIDを正確に指定してください。popovertargetaction属性で操作を明示できますが、省略時は表示と非表示を切り替える「toggle」動作となります。popover属性を持つ要素に、CSSでdisplay: none;を設定する必要はありません。このAPIは比較的新しいため、利用する際は対象ブラウザの対応状況を事前に確認し、キーボード操作などアクセシビリティへの配慮も検討することが重要です。

HTML Popover Hint を表示する

1<!DOCTYPE html>
2<html lang="ja">
3<head>
4    <meta charset="UTF-8">
5    <meta name="viewport" content="width=device-width, initial-scale=1.0">
6    <title>HTML Popover Hint Example</title>
7    <style>
8        /* スタイリングは必須ではありませんが、視認性向上のために追加 */
9        body {
10            font-family: sans-serif;
11            display: flex;
12            justify-content: center;
13            align-items: center;
14            min-height: 100vh;
15            margin: 0;
16            background-color: #f4f4f4;
17        }
18        button {
19            padding: 10px 20px;
20            font-size: 16px;
21            cursor: pointer;
22        }
23        [popover] {
24            border: 1px solid #ccc;
25            padding: 15px;
26            background-color: white;
27            box-shadow: 0 4px 8px rgba(0,0,0,0.2);
28            border-radius: 5px;
29        }
30    </style>
31</head>
32<body>
33
34    <!--
35        [popovertarget] 属性を持つ要素は、クリックされると
36        [popover] 属性を持つ対応する要素を表示/非表示します。
37        値には、表示したいポップオーバーのIDを指定します。
38    -->
39    <button popovertarget="myHintPopover">
40        このボタンのヒントを見る
41    </button>
42
43    <!--
44        [popover] 属性を持つ要素は、デフォルトで非表示になり、
45        [popovertarget] 属性によって制御されるポップアップUIとして機能します。
46        "manual" の値は、表示と非表示を完全にスクリプトで制御する場合に使用できます。
47        デフォルトは "auto" で、ライトディスミス(ポップオーバー外クリックで非表示)が可能です。
48    -->
49    <div id="myHintPopover" popover="auto">
50        <h3>簡単なヒント</h3>
51        <p>この情報は、ボタンをクリックすると表示されます。ポップオーバーの外側をクリックするか、Escキーを押すと閉じます。</p>
52        <!--
53            [popovertargetaction="hide"] を持つボタンは、
54            対応するポップオーバー(親または popovertarget で指定されたもの)を閉じます。
55        -->
56        <button popovertargetaction="hide">閉じる</button>
57    </div>
58
59</body>
60</html>

HTMLのpopover属性は、ウェブページ上で一時的に表示されるUI要素、例えばヒントや通知、簡易的なダイアログなどを簡単に実装するためのグローバル属性です。この属性を持つ要素は、初期状態では非表示になっており、特定の操作によって前面にポップアップとして表示されます。

popover属性自体には引数や戻り値はありませんが、値を指定することでその挙動を制御できます。例えば、popover="auto"と設定すると、ポップオーバーの外側をクリックしたり、Escキーを押したりすることで自動的に閉じられる「ライトディスミス」機能が有効になります。popover="manual"と設定した場合は、表示と非表示をJavaScriptで完全に制御する必要があります。

このポップオーバーを表示するためには、通常、別の要素のpopovertarget属性と組み合わせて使用します。popovertarget属性を持つボタンなどをクリックすると、その値に指定されたIDを持つpopover要素が表示されます。また、ポップオーバー内にpopovertargetaction="hide"属性を持つボタンを配置することで、そのボタンがクリックされたときにポップオーバーを閉じることが可能です。

これにより、JavaScriptをほとんど書くことなく、ユーザーにわかりやすいインタラクティブな情報提供や操作フローを簡単に実装できるようになります。

popover属性は、一時的な情報表示に利用するポップアップUIを簡単に実装できるグローバル属性です。コンテンツを表示したい要素にpopover属性を、それを開閉するボタンにはpopovertarget属性を付与し、値にはpopoverを持つ要素のidを正確に指定してください。このIDの紐付けが動作の鍵となります。

デフォルトのpopover="auto"では、ポップオーバーの外側をクリックしたり、Escキーを押したりすると自動的に閉じますが、popover="manual"を指定すると、表示・非表示の制御を完全にJavaScriptで行う必要があります。ポップオーバーを閉じるボタンにはpopovertargetaction="hide"を付与すると、特別なスクリプトなしで閉じることが可能です。見た目はCSSで自由に調整できますが、新しい機能のため、本番環境での利用前には主要ブラウザでの動作確認をお勧めします。

関連コンテンツ

関連IT用語