https://coliss.com/articles/build-websites/operation/css/what-is-the-top-layer.html
ポップアップやダイアログやフルスクリーンモードを実装する時などによく使用されるCSSのz-index: 10000;
が必要なくなります。
Chrome 105のデベロッパーツールで「最上位レイヤー(top layer)」がサポートされました。この最上位レイヤー要素は、z-index
が最も高い要素の上に表示され、かならずドキュメントの最上位に表示されます。
最上位に表示したいコンポーネントをHTMLの最下部や最上部に記述したり、CSSのz-index: 10000;
で最上位に昇格させる必要はありません。
Meet the top layer: a solution to z-index:10000
by Jhey Tompkins
下記は各ポイントを意訳したものです。 ※元サイト様のライセンスに基づいて翻訳しています。
最上位レイヤー(top layer)は、ブラウザのビューポート内に関連するドキュメント上にあり、各ドキュメントは最上位レイヤーを1つ持ちます。これは最上位レイヤーに昇格された要素は、z-index
やDOMツリーを気にする必要がないことを意味します。また、最上位レイヤーでは::backdrop
疑似要素を使用できます。Fullscreen APIの仕様では最上位に表示する素晴らしい例が解説されています。
【訳者注】::backdrop
疑似要素および最上位レイヤーはすべての主要なブラウザ(IEも!)にサポートされています。
参考: ::backdropのサポート状況
最上位レイヤーは、ドキュメントの残りの部分よりも上にコンテンツを表示するという問題を解決するのに役立つ機能です。覚えておくべき重要なポイントがいくつかあります。
document
フローの外側にあります。z-index
は、最上位レイヤーでは効果がありません。::backdrop
疑似要素があります。::backdrop
疑似要素は、新しい積み重ねコンテキストを生成します。デベロッパーツールで最上位レイヤーを確認すると、下記のように表示されます。top-layer
のバッジとDOMツリー最下部の#top-layer
に注目してください。