Ich habe 3 Ebenen von div
:
- (In grün unten) Eine oberste Ebene
div
mitoverflow: hidden
. Dies liegt daran, dass einige Inhalte (hier nicht gezeigt) in dieser Box zugeschnitten werden sollen, wenn sie die Größe der Box überschreiten. - (In rot unten) Darin habe ich
div
mitposition: relative
. Die einzige Verwendung hierfür ist für das nächste Level. - (In blau unten) Zum Schluss a
div
nehme ich mit aus dem Fluss mitposition: absolute
aber ich möchte relativ zum Rot positioniert werdendiv
(nicht zur Seite).
Ich möchte, dass die blaue Box aus dem Fluss genommen und über die grüne Box hinaus erweitert wird, aber wie in Bezug auf die rote Box positioniert wird:
Mit dem folgenden Code erhalte ich jedoch:
Wenn Sie das position: relative
rote Kästchen entfernen , darf das blaue Kästchen nun aus dem grünen Kästchen herauskommen, befindet sich jedoch nicht mehr relativ zum roten Kästchen:
Gibt es einen Weg zu:
- Halten Sie das
overflow: hidden
auf der grünen Box. - Erweitert sich die blaue Box über die grüne Box hinaus und ist sie relativ zur roten Box positioniert?
Die vollständige Quelle:
#d1 {
overflow: hidden;
background: #efe;
padding: 5px;
width: 125px;
}
#d2 {
position: relative;
background: #fee;
padding: 2px;
width: 100px;
height: 100px;
}
#d3 {
position: absolute;
top: 10px;
background: #eef;
padding: 2px;
width: 75px;
height: 150px;
}
<br/><br/><br/>
<div id="d1" >
<div id="d2" >
<div id="d3"></div>
</div>
</div>
css
overflow
css-position
Avernet
quelle
quelle
position: fixed
ignoriert dasoverflow:hidden
von jedem enthaltenden Element.Antworten:
Ein Trick, der funktioniert, besteht darin, Box 2 mit
position: absolute
statt zu positionierenposition: relative
. Normalerweise setzen wir eineposition: relative
auf eine äußere Box (hier Box 2), wenn eine innere Box (hier Box 3)position: absolute
relativ zur äußeren Box positioniert werden soll. Aber denken Sie daran: Damit Box Nr. 3 relativ zu Box Nr. 2 positioniert werden kann, muss Box Nr. 2 nur positioniert werden. Mit dieser Änderung erhalten wir:Und hier ist der vollständige Code mit dieser Änderung:
quelle
position: static
und das hat bei mir besser funktioniertposition: static
auf Box 2 anstelle von verwendenposition: absolute
.absolute
nicht abgeschnitten wird, aberrelative
funktioniert?Es gibt keine magische Lösung, etwas außerhalb eines versteckten Überlaufbehälters anzuzeigen.
Ein ähnlicher Effekt kann erzielt werden, indem Sie ein absolut positioniertes Div haben, das der Größe seines übergeordneten Elements entspricht, indem Sie es in Ihrem aktuellen relativen Container positionieren (das Div, das Sie nicht ausschneiden möchten, sollte sich außerhalb dieses Div befinden):
Denken Sie daran, dass Sie verwenden können, wenn Sie nur Inhalte auf der x-Achse ausschneiden müssen (was Ihr Fall zu sein scheint, da Sie nur die Breite des Divs festgelegt haben)
overflow-x: hidden
.quelle
Ich sehe keinen Weg, dies so zu machen, wie es ist. Ich denke, Sie müssen möglicherweise das
overflow:hidden
von div # 1 entfernen und ein weiteres div innerhalb von div # 1 hinzufügen (dh als Geschwister zu div # 2), um Ihren nicht spezifizierten 'Inhalt' zu speichern undoverflow:hidden
stattdessen das hinzuzufügen . Ich denke nicht, dass Überlauf übersteuert werden kann (oder sollte).quelle
Wenn im äußeren Div (dem grünen Kästchen) kein anderer Inhalt angezeigt wird, können Sie diesen Inhalt in einen anderen Div einbinden. Nennen wir ihn
"content"
. Haben Sie einen Überlauf auf diesem neuen inneren Teil versteckt, aber lassen Sie den Überlauf auf der grünen Box sichtbar.Der einzige Haken ist, dass Sie dann herumspielen müssen, um sicherzustellen, dass der Inhaltsbereich die Positionierung der roten Box nicht beeinträchtigt, aber es klingt so, als ob Sie dies mit wenig Kopfschmerzen beheben können sollten.
quelle