Ktouth Brand. on Web

け〜くんこと K.Ktouth のだらだらした日常と突発的に作るプログラムや読み物とかの雑多サイト



[2007年04月01日]

IEのz-indexの扱い

2011年01月26日 18:27更新 筆者:K.Ktouth

自分メモ。

Ext UIには便利なコンポーネントがたくさんあるが、Ext.LayoutDialogクラスをIEで利用するときには注意が必要である。
Ext.LayoutDialogの生成時に渡すmodalパラメータでモーダルダイアログが作成できるが、作成する場所によっては上手くモーダル表示できない。

Ext.LayoutDialogクラスはモーダル表示を、documentノードの末尾に表示を全部覆えるほどの大きな半透明のレイヤーを生成し、ダイアログレイヤーの背面に配置することで実現している。
この際の配置の前後関係はCSSのz-indexプロパティを利用している。
が、IEでダイアログを生成したレイヤーにposition:relative属性が設定されている場合、マスクレイヤーの下にダイアログが表示されて操作ができなくなる。
Firefoxでは問題なく表示される。

position:(relative|absolute)指定されたレイヤーはz-indexで配置の前後関係を変えられる。
おそらくだが、Firefoxではレイヤーは一元管理され、そのz-indexは全レイヤー共通の基準で独立している。対してIEではレイヤーは上位レイヤーの中で管理され、z-indexは上位レイヤーの外には影響しない。
そのため、レイヤーの外にある別のレイヤーは、そのレイヤーの中の前後関係に干渉することができない……模様。

解決(回避)方法は、ダイアログは元々ウィンドウ中央に表示されるのがデフォルトなので、作成する場所もrelative指定の外、つまりdocumentレイヤーに配置しておけば問題ない。

コメント(1) [コメントを投稿する]
_ もも2011年01月26日 18:27

永きに渡る謎が今解けました。分かりやすい説明ありがとうございます。

本日のリンク元
アンテナ
その他のリンク元
検索