2017-03-06 8 views
0

私が言っているのは、この状況ではWHYz-indexです。z-indexは支配的ではありませんか?

#IAmGreater{ 
 
position:fixed; 
 
z-index: 999!important; 
 
background-color: green; 
 
height: 50px; 
 
width: 50px; 
 
top: 0; 
 
left: 0; 
 
} 
 
#parent{ 
 
background-color: blue; 
 
height: 200px; 
 
width: 200px; 
 
position: fixed; 
 
margin: 50px; 
 
} 
 
#IAmDown{ 
 
position: absolute; 
 
z-index: 0; 
 
background-color:red; 
 
height:100px; 
 
width: 100px; 
 
}
<div id="parent"> 
 
<span id="IAmGreater"></span> 
 
</div> 
 
<div id="IAmDown"> 
 
</div>

#IAmGreater私はz-index: -1IAmDownを設定するが、この場合にはparent div要素もIAmDownの上になり、私はそれをしたくない場合にのみ#IAmDownの上にすることができます。 私が望むのは、グリーンボックスがレッドボックスの上にあり、レッドボックスがブルーのボックスの上にあることです。

その親、またはEDIT HTMLの外側グリーンボックスを移動するから別にこのへの解決策はありますか?

私は、これを操作するにはJavaScriptを使用していますが(実際はJQuery上ではありませんが)、私はどのようにするのか分かりません。助けて?

+1

親要素は、独自のスタッキングコンテキストを作成します。 'z-index'はグローバルなものではありません。 – Pointy

+0

異なるdivにする必要があります – Dragos

+0

'#IAmGreater'の' position'を絶対divに変更して、親divに表示する必要があります。 –

答えて

0

これは恐ろしいスタッキングインデックスの問題の1つです。 https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context position:fixedで要素を作成すると、新しいスタッキングコンテキストが作成されます。スタッキングコンテキスト間で要素をシャッフルすることはできません。

残念ながら、マークアップを変更する必要があります。

<div id="newParent"> 
<div id="oldParent"></div> 
<span id="IAmGreater"></span> 
</div> 
<div id="IAmDown"> 
</div> 
+0

_緑色のボックスを親の外に移動するか、HTMLを編集する以外に何か解決策がありますか?_ – Arkonsol

0

これは機能します。 、

#IAmGreater{ 
 
position:fixed; 
 
z-index: 1000; 
 
background-color: green; 
 
height: 50px; 
 
width: 50px; 
 
top: 0; 
 
left: 0; 
 
} 
 
#parent{ 
 
background-color: blue; 
 
height: 200px; 
 
width: 200px; 
 
position: fixed; 
 
z-index: -1; 
 
margin: 50px; 
 
} 
 
#IAmDown{ 
 
position: absolute; 
 
background-color:red; 
 
height:100px; 
 
width: 100px; 
 
z-index: 0; 
 
}
<div id="parent"></div> 
 
<span id="IAmGreater"></span> 
 
<div id="IAmDown"> 
 
</div>

+0

_緑色のボックスを親の外に移動するか、HTMLを編集する以外に何か解決策がありますか?_ – Arkonsol

0

その親(#parent)はZインデックスを持っていないhtml

の変化をしたことが理由です。あなたが#IAmDownの1以上である1を追加した場合、予想通り、それが変更されます。

#IAmGreater{ 
 
position:fixed; 
 
z-index: 999!important; 
 
background-color: green; 
 
height: 50px; 
 
width: 50px; 
 
top: 0; 
 
left: 0; 
 
} 
 
#parent{ 
 
background-color: blue; 
 
height: 200px; 
 
width: 200px; 
 
position: fixed; 
 
margin: 50px; 
 
z-index:1; 
 
} 
 
#IAmDown{ 
 
position: absolute; 
 
z-index: 0; 
 
background-color:red; 
 
height:100px; 
 
width: 100px; 
 
}
<div id="parent"> 
 
<span id="IAmGreater"></span> 
 
</div> 
 
<div id="IAmDown"> 
 
</div>

+0

_All私は、グリーンボックスがレッドボックスの上にあり、レッドボックスがブルーの上にあることを望んでいます._ – Arkonsol

+0

これは現在のHTML構造では機能しません。つまり、親の間に外部要素を置くことはできませんとその子供。 – Johannes

+0

JavaScriptを使用しても基本的に不可能です。 – Arkonsol

0

ここでは、私の最初の答えにコメントして要求されたように、溶液を含む第2の答えがあります。すべての要素は、位置を固定している、と緑1、赤1の外に移動されます。

#IAmGreater{ 
 
position:fixed; 
 
z-index: 999!important; 
 
background-color: green; 
 
height: 50px; 
 
width: 50px; 
 
top: 0; 
 
left: 0; 
 
} 
 
#parent{ 
 
background-color: blue; 
 
height: 200px; 
 
width: 200px; 
 
position: fixed; 
 
margin: 50px; 
 
} 
 
#IAmDown{ 
 
position: fixed; 
 
z-index: 0; 
 
background-color:red; 
 
height:100px; 
 
width: 100px; 
 
}
<div id="parent"> 
 
</div> 
 
<span id="IAmGreater"></span> 
 
<div id="IAmDown"> 
 
</div>

+0

それから私は本当に不可能だと思う。 :/ – Arkonsol

+0

そうです。 'span'を' parent'にラップし、 'span'の' parent'の上に 'span'を入れたいと思っています。少なくとも今は不可能に聞こえる –

関連する問題