z-index
とコードに問題があります。すべての行にポップアップを表示し、その行に対して相対的に配置します。だから私はこのコードを作成しました:
<div class="level1">
<div class="level2">
<input type="text" value="test1" />
<div class="popup">test1</div>
</div>
<div class="level2">
<input type="text" value="test2" />
<div class="popup">test2</div>
</div>
</div>
次のスタイルで
.level1
{
position:relative;
z-index:2;
}
.level2
{
position:relative;
z-index:3;
}
.popup
{
position:absolute;
left:0px;
top:10px;
width:100px;
height:100px;
background:yellow;
z-index:4;
}
要素にposition: relative
を設定すると、新しい包含ブロックが確立されます。そのブロック内のすべての配置は、それに関してです。
そのブロック内の要素にz-indexを設定すると、同じブロック内の他の要素に関してのみレイヤーが変更されます。
私は回避策を知りません。
relative
位置でz-index
を使用できます。 position: relative
を指定するだけです。本当にポップアップしたように見せたい場合は、box-shadow
を使用することをお勧めします
.popup {
position:relative;
left: 0px;
top: 10px;
width: 100px;
height: 100px;
background:yellow;
z-index: 4;
-webkit-box-shadow: 0px 6px 6px 0px rgba(213,213,213,0.6);
-moz-box-shadow: 0px 6px 6px 0px rgba(213,213,213,0.6);
-ms-box-shadow: 0px 6px 6px 0px rgba(213,213,213,0.6);
-o-box-shadow: 0px 6px 6px 0px rgba(213,213,213,0.6);
box-shadow: 0px 6px 6px 0px rgba(213,213,213,0.6);
}
バックdivに負の値のz-indexを追加してみてください
Z-Indexは、2つ以上の要素が重複する場合にのみ結果が表示されるルールの順序です。これは、絶対位置と同じz-index動作が必要な場合は、それらをオーバーラップさせる必要があることを意味します。相対位置はそれらをオーバーラップさせないので、たとえばこの例では、この2つのdivをオーバーラップさせるために、2番目のdivのトップを-50pxに設定する必要があります。
<div style="background-color: blue; width: 500px; height: 100px; position: relative">
<div style="background-color: red; width: 50px; height: 50px; position: relative; z-index: 1; top: 0px"></div>
<div style="background-color: yellow; width: 50px; height: 50px; position: relative; z-index: 0; top: -50px"></div>
</div>