2017-09-13 1 views
1

Ich habe versucht, ein Kind div, die unter dem übergeordneten Element und über die anderen Elemente kommen.Positionieren Sie ein Element unter einem Div mithilfe von Z-Index

.box1{ 
 
    background-color: blue; 
 
    width: 500px; 
 
    height: 100px; 
 
    position: relative; 
 
    z-index: 3; 
 
} 
 

 
.box2{ 
 
    position: absolute; 
 
    background-color: red; 
 
    width: 200px; 
 
    height: 100px; 
 
    left: 30%; 
 
    top: 20px; 
 
    z-index: 2; 
 
} 
 

 
.box3{ 
 
    background-color: yellow; 
 
    width: 500px; 
 
    height: 100px; 
 
    z-index: 1; 
 
}
<div class="box1"> 
 
    <div class="box2"></div> 
 
</div> 
 
<div class="box3"></div>

Ich möchte das rote Rechteck positionieren unter dem blauen und über die gelb. Ich habe den Z-Index auf drei von ihnen gesetzt. Es funktioniert jedoch nicht.

Was denken Sie darüber? Vielen Dank!

aktualisieren: Obwohl die Boxen in der richtigen Reihenfolge sind, können die Elemente innerhalb dieser Boxen jedoch jetzt nicht mehr angeklickt werden.

Sie können den Fehler mal hier vorbeischauen: https://jsfiddle.net/p1xd6zah/

+3

Die blaue und die gelbe Box haben unterschiedliche [Stapel Kontexten] (https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context). Da die blaue Box einen Z-Index von 3 und die gelbe einen Z-Index von 1 hat, sind die blaue Box und ihre Kinder ** immer über dem gelben **, unabhängig vom Z-Index der inneren Kinder (Sie können es auf 1000 einstellen und es wird nichts ändern. Die einzige Möglichkeit, das Rot zwischen den beiden einzuschließen, besteht darin, sicherzustellen, dass die rote Box ein Geschwister der anderen beiden Boxen ist. – Terry

Antwort

3

Sie ein mit z-index hacken tun können:

  1. Sie z-index: -1-box2 hinzufügen können. (Stapelt die Kind unter dem Eltern)

  2. hinzufügen z-index: -2 und position: relative-box3 (jetzt stapeln diese hinterbox2)

entfernen die z-index von box1 - siehe Demo unter:

.box1 { 
 
    background-color: blue; 
 
    width: 500px; 
 
    height: 100px; 
 
    position: relative; 
 
} 
 

 
.box2 { 
 
    position: absolute; 
 
    background-color: red; 
 
    width: 200px; 
 
    height: 100px; 
 
    left: 30%; 
 
    top: 20px; 
 
    z-index: -1; 
 
} 
 

 
.box3 { 
 
    background-color: yellow; 
 
    width: 500px; 
 
    height: 100px; 
 
    z-index: -2; 
 
    position: relative; 
 
}
<div class="box1"> 
 
    <div class="box2"></div> 
 
</div> 
 
<div class="box3"></div>

+1

Danke kukuz, deine Lösung funktioniert super! –

+0

Hallo Kukuz, es gibt ein anderes Problem, weil das Element in der Box jetzt nicht angeklickt werden kann. Könnten Sie sich das bitte anschauen? https://jsfiddle.net/p1xd6zah/ –

+0

Dies ist ein * hack * im besten Fall, glaube nicht, dass das gelöst werden kann ... – kukkuz

Verwandte Themen