このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

ポップオーバー API

Baseline 2025
最近利用可能
*

2025年1月以降、この機能は最新のバージョンの端末およびブラウザーで動作します。古い端末やブラウザーでは動作しないことがあります。

* この機能の一部は、対応レベルにばらつきがある場合があります。

ポップオーバー API は、他のページコンテンツの上に表示するポップオーバーコンテンツを表示するための、標準的な、一貫性のある、柔軟な仕組みを開発者に提供します。ポップオーバーコンテンツは、HTML 属性を用いて、または JavaScript を用いて制御することができます。

概念と使用方法

ウェブでは、他のコンテンツの上にコンテンツを示し、ユーザーにとって重要な情報や導くべき操作の詳細を示すというのが、とても一般的なパターンです。このコンテンツは、オーバーレイ、ポップアップ、ポップオーバー、ダイアログなど、さまざまな名称で呼ばれます。私たちは、このドキュメントを通して、これらをポップオーバーと呼ぶことにします。一般的に、これらは次のようなものがあります。

  • モーダルというのは、ポップオーバーが示されている間、ページの残りの部分は、ポップオーバーが何らかのアクションを起こすまで(例えば、重要な選択がなされるまで)、反応しないようにレンダリングされるということです。
  • 非モーダルというのは、ポップオーバーが表示されている間も、ページの残りの部分が反応するようにするということです。

ポップオーバー API を使用して作成されたポップオーバーは常に非モーダルです。モーダルポップオーバーを作成したい場合は、<dialog> 要素を使うのが適切です。2 つの間には明確な重複があります。ポップオーバーは、持続的なもので、HTML を使用して制御したい場合などに作成します。ポップオーバーの制御をダイアログの意味づけと組み合わせたい場合は、<dialog> 要素をポップオーバーすることもできます(<dialog popover> は完全に有効です)。

ポップオーバー API のよくある用途は、アクションメニュー、独自の「トースト」通知、フォーム要素のサジェスト、コンテンツピッカー、チュートリアル UI などのユーザーと対話する要素があります。

ポップオーバーは、複数の方法で作成することができます。

  • 新しい一連の HTML 属性によって作成できます。トグルボタンを持つ単純なポップオーバーは、以下のコードで作成することができます。

    html
    <button popovertarget="mypopover">ポップオーバーの切り替え</button>
    <div id="mypopover" popover>ポップオーバーコンテンツ</div>
    
  • JavaScript API から。例えば、HTMLElement.togglePopover() を使用してポップオーバーを表示と非表示のトグル切り替えができます。

同時に、ポップオーバー API では、ポップオーバーの表示・非表示の切り替えに応答するためのイベントや、ポップオーバーのスタイル設定を支援する CSS 機能も指定されています。ポップオーバー API の使用で、この API の詳細なガイドを参照してください。

関連する機能である関心インボーカーを使用することができます。JavaScript を必要とせずに、ホバーやフォーカス時にポップオーバーを表示させることができます。詳細については、関心インボーカーの使用をご覧ください。

HTML 属性

interestfor

HTML の <a>、<button>、<area>、または SVG の <a> 要素を関心インボーカーとして定義します。その値は、呼び出し元要素に対する関心が生じたり失われたりした際に、何らかの影響(通常は表示または非表示)を受ける対象要素の id です。

popover

グローバル属性で、ある要素をポップオーバー要素にします。値としてポップオーバー状態("auto"、"hint"、"manual" のいずれか)を取ります。

popovertarget

<button> または <input> 要素をポップオーバー制御ボタンにします。値として、制御するポップオーバー要素の ID を取ります。

popovertargetaction

制御ボタン(<button> または <input>)で制御しているポップオーバー要素に対して行う動作("hide"、"show"、"toggle" の何れか)を指定します。

CSS 機能

::backdrop

擬似要素 ::backdrop は、ポップオーバー要素の後ろに直接配置される全画面要素で、ポップオーバーの背後にあるページコンテンツに必要な効果を追加することができます(ぼかすなど)。

interest-delay, interest-delay-start, interest-delay-end

interest-delay 一括指定プロパティ、およびそれに関連する interest-delay-start および interest-delay-end の個別指定プロパティを使用することで、ユーザーが興味を示したり失ったりしてから、ブラウザーがその変化に応じて動作するまでの間に遅延を追加することができます。

:interest-source および :interest-target

これらのセレクターは、関心が示された場合に限り、それぞれ関心インボーカーおよびそれに関連付けられた対象要素にスタイルを適用するために使用できます。

:popover-open

:popover-open 擬似クラスは、ポップオーバー要素が表示状態にあるときのみ一致します。これは、ポップオーバー要素が表示されているときのスタイル設定に使用できます。

インターフェイス

InterestEvent

interest および loseinterest イベントのイベントオブジェクトです。これには、関連付けられた関心インボーカー要素への参照を含む source プロパティが含まれます。

ToggleEvent

popover 要素の状態が表示と非表示の間で切り替わるときにユーザーに通知するイベントを表します。これは、beforetoggle と toggle イベント用のイベントオブジェクトで、ポップオーバーでその状態が変化するときに発行されます。

他のインターフェイスの拡張

インスタンスプロパティ

interestForElement

関心インボーカーが対象としている要素への参照を取得または設定します。HTML または SVG の関心インボーカーが、その interestfor 属性でターゲット要素を参照している場合、その要素は、対応する DOM オブジェクトの interestForElement プロパティで参照されます。HTMLButtonElement、HTMLAnchorElement、HTMLAreaElement、SVGAElement の各インターフェイスで利用可能です。

HTMLElement.popover

要素のポップオーバー状態を JavaScript で取得または設定し("auto", "hint", "manual" のいずれか)、機能検出にも使用することができます。HTML のグローバル属性である popover global を反映します。

HTMLButtonElement.popoverTargetElement および HTMLInputElement.popoverTargetElement

この制御ボタンで制御されるポップオーバー要素を取得または設定します。JavaScript において HTML の popovertarget 属性に相当するものです。

HTMLButtonElement.popoverTargetAction および HTMLInputElement.popoverTargetAction

この制御ボタンが制御するポップオーバー要素に対して行われるアクション("hide"、"show"、"toggle" の何れか)を設定または取得します。HTML の popovertargetaction 属性を反映します。

インスタンスメソッド

HTMLElement.hidePopover()

ポップオーバー要素を最上位レイヤーから削除し、display: none でスタイル設定することにより、ポップオーバー要素を非表示にします。

HTMLElement.showPopover()

ポップオーバー要素を最上位レイヤーに追加して表示します。

HTMLElement.togglePopover()

ポップオーバー要素の表示状態と非表示状態を切り替えます。

イベント

beforetoggle イベント

ポップオーバー要素の表示と非表示の状態が変わる直前、またはその逆で発行されます。 ポップオーバーが開くのを防ぐため、またはポップオーバーの状態に応じて他の要素を開始するために使用できます。

toggle イベント

ポップオーバー要素の状態が、表示と非表示、またはその逆に変化した直後に発行されます。

interest

関心が示された際に、関心インボーカーの対象要素に対して発生し、それに応じてコードを実行することができます。

loseinterest

関心が失われた際に、関心インボーカーの対象要素に対して発生し、それに応じてコードを実行することができます。

例

仕様書

仕様書
HTML
# dom-popover
HTML
# event-beforetoggle
HTML
# event-toggle

ブラウザーの互換性

api.HTMLElement.popover

api.HTMLElement.beforetoggle_event.popover_elements

api.HTMLElement.toggle_event.popover_elements

関連情報