Z-indexだけでは超えられないレイヤーの壁を
自在に制御する
| 2022/02/07
Z-indexを大きくしているのに少ない数値のレイヤーの下になってしまう。
下の画像のようにマウスオーバー等でヘルプ画面などをポップアップさせる仕様はよくあると思います。
さらによくあるのが、そのポップアップが下のコンテンツに隠れてしまうケースです。
隠れているポップアップのZ-indexを乗っかっているレイヤーより高く設定しているのにです。
親同士の溝がZ-Indexの超えられない壁だった。
原因はターゲットの親のZ-indexが関係しています。上のサンプルを分かりやすいようにすべてのポップアップを一度に表示させてみます。
それぞれのポップアップの親レイヤーのZ-Indexを調べてみると、すべてが同じ値となっています。(Z-indexが同じ場合、下の階層の方が上に表示されます。)
つまりどれだけポップアップのZ-indexを大きくしても親同士のレイヤーの上下関係が下の場合、上の階層を超えることはできないのです。
MDNにも『重ね合わせコンテキストは HTML 要素の階層構造の部分集合です。』と記載があります。
こんなところにも超えられない壁があるとは!
上の親Zindexを一番大きくし小さくすると目先の問題は解消。
じゃあ上から下へ順番にZ-Indexを小さくしてやれば解決かと思いきや、さっきの問題は解決しますが、今度は上のレイヤーが下のポップアップに被ってしまいます。あっちを立てればこっちが立たずってやつですね。ま、ポップアップを下方向のみにスライドダウンさせるなど、上に食み出ない設定にすればこれでもOKですが・・・。
最も簡単な解決方法:Javascriptでポップアップの親のZ-Indexを大きくする。
最も簡単な解決方法はjavascriptでターゲットの親のZ-Indexを高く設定してあげる方法です。一度に一個しかポップアップしないヘルプパレットなどの場合はこの方法が最もスマートで簡単です。
当然、全てのポップアップを常に表示させる場合だと、この方法ではうまくいきません。が、まあ、そんな常時表示させるようなデザインはあんまり用途はないと思いますが。コンテンツが隠れて邪魔なので。
『レイヤーの重なりを制御する』関連のお薦め
ミルクティーとTransform Rotateは順番が肝心
ページャーを複数設置。
PHP8以降の警告文戻り値の型チェックが厳格にへ対応する
CSSで水玉模様を作る
SVG画像で写真を切り抜く
縦組み進化論
レイヤーの重なりを制御する
wordpressPHP8の不具合をCatGPTが怪傑
CSSのColumnsで最適な段落カラムを自動生成。
GA4でユーザー動向を詳しく調べる
ボックスモデルとパーセント指定を極める
Nullを引数へ渡せない問題をCatGPTが怪傑
MW‐WPFORM確認画面へ移動しない悩み解決
Information End
このページで紹介しているプログラムやビジュアルなどご依頼いただければ実装を賜ります。
お問い合わせはこちら