【HTML】ポップアップを実現するpopoverの使い方
「popover属性」を使えば、JavaScriptを使わずに簡単なポップアップ(モーダルやツールチップ)を実装できます。
基本的な使い方からブラウザ対応状況、注意点までをわかりやすく解説します。
popover属性とは?
popover
属性は、任意のHTML要素をポップアップとして扱うためのグローバル属性です。この属性を指定した要素は、初期状態で非表示(display: none
)となり、指定されたトリガー要素から表示・非表示を制御できます。
サンプル
こんにちは!これはポップアップの内容です。
基本的な構文
|
|
popovertarget
属性:ボタンや入力要素に指定し、対応するポップアップ要素のIDを設定します。popover
属性:ポップアップとして機能させたい要素に指定します。
この例では、ボタンをクリックすると、id="my-popover"
のdiv
要素が表示されます。
popover属性の値と挙動
popover
属性には以下の値を指定できます:
auto
(デフォルト):クリックやEscキーで閉じることができ、他のauto
ポップアップを開くと自動的に閉じます。manual
:明示的に表示・非表示を制御する必要があり、ユーザーの操作で自動的に閉じることはありません。hint
(実験的):auto
ポップアップとは独立して表示され、他のhint
ポップアップを開くと閉じます。
値を省略した場合、auto
と同じ挙動になります。
複数の操作ボタンを使った例
popovertargetaction
属性を使うと、ポップアップの表示、非表示、トグル(切り替え)を明示的に指定できます。
|
|
この例では、「表示」ボタンでポップアップを表示し、「非表示」ボタンで閉じます。
CSSでのスタイリング
ポップアップの表示状態に応じてスタイルを変更するには、:popover-open
疑似クラスを使用します。
|
|
また、::backdrop
疑似要素を使って、ポップアップの背後に半透明の背景を追加することも可能です。
|
|
ブラウザ対応状況(2025年4月時点)
ブラウザ | 対応バージョン |
---|---|
Chrome | 114以降 |
Edge | 114以降 |
Firefox | 125以降 |
Safari | 17以降 |
Opera | 100以降 |
iOS Safari | 17以降 |
Android Chrome | 114以降 |
最新のブラウザでは広くサポートされていますが、古いバージョンや一部のブラウザでは未対応の場合があります。必要に応じて、JavaScriptによるフォールバックを検討してください。
注意点とベストプラクティス
- アクセシビリティ:
popover
属性自体には特定のARIAロールが付与されないため、必要に応じてrole="dialog"
やaria-labelledby
などを追加して、スクリーンリーダー対応を強化しましょう。 - フォーカス管理:ポップアップを開いた際に、適切な要素にフォーカスを移動させることで、キーボード操作のユーザーにも配慮できます。
- 位置調整:デフォルトではポップアップが画面中央に表示されますが、CSSで
position
やinset
プロパティを調整することで、任意の位置に配置できます。