Copy & Paste Engineer

【HTML】ポップアップを実現するpopoverの使い方

【HTML】ポップアップを実現するpopoverの使い方

「popover属性」を使えば、JavaScriptを使わずに簡単なポップアップ(モーダルやツールチップ)を実装できます。 基本的な使い方からブラウザ対応状況、注意点までをわかりやすく解説します。


popover属性とは?

popover属性は、任意のHTML要素をポップアップとして扱うためのグローバル属性です。この属性を指定した要素は、初期状態で非表示(display: none)となり、指定されたトリガー要素から表示・非表示を制御できます。

サンプル

こんにちは!これはポップアップの内容です。

基本的な構文

<button popovertarget="my-popover">ポップアップを開く</button>
<div id="my-popover" popover>
  こんにちは!これはポップアップの内容です。
</div>

この例では、ボタンをクリックすると、id="my-popover"div要素が表示されます。


popover属性の値と挙動

popover属性には以下の値を指定できます:

値を省略した場合、autoと同じ挙動になります。


複数の操作ボタンを使った例

popovertargetaction属性を使うと、ポップアップの表示、非表示、トグル(切り替え)を明示的に指定できます。

<button popovertarget="my-popover" popovertargetaction="show">表示</button>
<button popovertarget="my-popover" popovertargetaction="hide">非表示</button>

<div id="my-popover" popover>
  これは手動制御のポップアップです。
</div>

この例では、「表示」ボタンでポップアップを表示し、「非表示」ボタンで閉じます。


CSSでのスタイリング

ポップアップの表示状態に応じてスタイルを変更するには、:popover-open疑似クラスを使用します。

[popover] {
  padding: 1em;
  background: #f0f0f0;
  border: 1px solid #ccc;
  border-radius: 8px;
}

:popover-open {
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
}

また、::backdrop疑似要素を使って、ポップアップの背後に半透明の背景を追加することも可能です。

[popover]::backdrop {
  background: rgba(0, 0, 0, 0.3);
}

ブラウザ対応状況(2025年4月時点)

ブラウザ 対応バージョン
Chrome 114以降
Edge 114以降
Firefox 125以降
Safari 17以降
Opera 100以降
iOS Safari 17以降
Android Chrome 114以降

最新のブラウザでは広くサポートされていますが、古いバージョンや一部のブラウザでは未対応の場合があります。必要に応じて、JavaScriptによるフォールバックを検討してください。


注意点とベストプラクティス


参考リンク