popover API の登場
Chrome 114 から popover API が利用可能になりました。
Introducing the popover API - Chrome Developers
他のブラウザのサポート状況は以下のとおりです。
HTMLElement API: popover | Can I use… Support tables for HTML5, CSS3, etc
popover API の機能
popover API の機能はとてもざっくりと説明すると以下の 2 つです。
- 画面の空いているところに独立したレイヤーでポップオーバーを表示
- ポップオーバーの領域外をクリック・タップする、もしくは ESC キーを押すとポップオーバーが閉じてフォーカスが戻る
検証:ポップオーバー表示の領域について
以下のようなグリッドレイアウトの画面で、ポップオーバー表示をしてみます。
この場合、ポップオーバーは .main
の DOM の領域に表示されるのか試します。
<body>
<main class="parent">
<div class="header">
<h2>Header</h2>
</div>
<div class="main">
<h2>Main</h2>
<button popovertarget="my-popover">Open Popover</button>
<div id="my-popover" popover>
<p>I am a popover with more information.</p>
</div>
</div>
<div class="side">
<h2>Side</h2>
</div>
</main>
</body>
<style>
body {
background-color: cadetblue;
}
.parent {
display: grid;
grid-template-columns: repeat(5, 1fr);
grid-template-rows: repeat(5, 1fr);
grid-column-gap: 0px;
grid-row-gap: 0px;
}
.header {
padding-left: 20px;
background-color: brown;
grid-area: 1 / 1 / 2 / 6;
}
.main {
padding-left: 20px;
background-color: beige;
grid-area: 2 / 1 / 6 / 5;
}
.side {
padding-left: 20px;
background-color: darkgoldenrod;
grid-area: 2 / 5 / 6 / 6;
}
</style>
結果:ポップオーバーは画面全体を領域とする
ポップオーバーは .main
の領域内に表示されるのではなく、画面全体の空いている場所に表示されました。
もし .main
の領域内で表示したい場合は独自に制御する必要があります。
See the Pen popover api sample by 70_10 (@70-10) on CodePen.