実用的なフィドルの例!
この問題の範囲を提示したコードに限定すると、問題なく機能します。position:fixed
div
たとえば、フィドルでは、ソリューションが機能していることを示すために、に背景色を配置したことがわかります。
ただし、を使用している場合は、要素にいくつかが適用されてz-index
いると想定しても問題ありません。z-index
position
これを考慮して、この部分:
<div style="z-index:902;">
<div style="position: fixed; width: 100%; height: 100%; left: 0; top: 0;">
Overlay
</div>
Contents of container 1
</div>
position:fixed
の内側のdivは、側面に他のスタック要素(兄弟)があるスタック要素の内側にあり、。と同じスタック位置にあるため、「ページ全体」オーバーレイとして機能することはできませんz-index:902;
。
説明するためにこのフィドルを参照してください!
兄弟要素をより低いスタック位置に移動すると、それを機能させることができます。このフィドルの例を参照してください!
編集済み
私の答えのこの最初の部分は、私の頭が痛い(コメントを参照)のアドバイスに従って編集され、OPが質問を推測に任せたため、最初のフィドルが機能することをよりよく説明しました!この回答で提示および承認された2つのソリューションに変更は加えられていません。
解決策
オーバーレイを他のすべてのdivの外側に配置しますが、これは目標によって異なります。
<div style="z-index:902;">
Contents of container 1
</div>
<div style="z-index:902;">
Contents of container 2
</div>
<div style="z-index:902;">
Contents of container 3
</div>
<div style="position:fixed; z-index:10000; left:0; top:0; right:0; bottom:0; background:#ccc;">
Overlay
</div>
このフィドルの例を参照してください!
編集済み
このコメントのために:
はい、これは理想的な答えであり、書かれたとおりに私の質問に答えるので受け入れますが、私が直面した問題は、作成を制御できなかった他のコンテナーのz-indexを動的に変更するJavaScriptからのものでしたそれらすべての上に私のdivを配置することは不可能です。
中に好きなものを配置できるcontainer 1
と仮定し、jQueryを使用している、または使用できると仮定すると、問題を解決するためにこれを行うことができます。
<div style="z-index:902;">
<div class="placeOutside" style="position:fixed; z-index:903; right:0; bottom:0; left:0; top:0; background:#ccc;">
Overlay
</div>
<script type="text/javascript">
jQuery(document).ready(function($) {
$('.placeOutside').appendTo('body');
});
</script>
Contents of container 1
</div>
<div style="z-index:902;">
Contents of container 2
</div>
<div style="z-index:902;">
Contents of container 3
</div>
この動作するフィドルの例を参照してください!