In CSS overflow:hidden
wird das für übergeordnete Container festgelegt, damit es mit der Höhe der schwebenden untergeordneten Container erweitert werden kann.
Aber es hat auch eine andere interessante Eigenschaft, wenn es mit margin: auto
...
Wenn VORHERIGES Geschwister ein schwebendes Element ist, wird es tatsächlich nebeneinander angezeigt. Das heißt, wenn das Geschwister ist, erscheint float:left
der Container mit float:none overflow:hidden
rechts neben dem Geschwister, keine neue Zeile - so als ob er im normalen Fluss schweben würde. Wenn es sich um das vorherige Geschwister handelt, float:right
wird der Container links vom Geschwister angezeigt. Wenn Sie die Größe dieses Containers ändern, wird er genau zwischen den schwebenden Elementen zentriert angezeigt. Sagen Sie, wenn Sie zwei vorherigen Geschwister haben, eine float:left
der anderen float:right
, wird der Behälter zwischen die beiden zentriert erscheinen.
Also hier ist das Problem ...
Wie kann ich diese Art von Layout beibehalten, ohne Kinder zu maskieren?
Das Googeln im gesamten Web gibt mir Möglichkeiten, wie clear:both
ein Container erweitert werden kann. Ich kann jedoch keine alternative Lösung finden, um die linke / rechte Zentrierung des vorherigen Kindes beizubehalten. Wenn Sie den Container overflow:visible
erstellen, ignoriert der Container plötzlich den Layoutfluss der schwebenden Elemente und erscheint über dem schwebenden Element geschichtet.
Also Frage :
Ich muss den Container haben overflow:hidden
, um das Layout zu erhalten ...
Wie kann ich es schaffen, dass die Kinder nicht maskiert werden? Ich muss das Kind absolut relativ zum Elternteil außerhalb des Containers positionieren.
ODER
Wie overflow:visible
kann ich ein Kind absolut relativ zum Elternteil außerhalb des Containers positionieren ... NOCH den schwimmerartigen Layoutfluss der Geschwister bewahren?
overflow:hidden
überhaupt. Durch Anwenden eines Clearfixes auf das übergeordnete div können nicht alle untergeordneten Komponenten in derselben Höhe wie das übergeordnete Element "enthalten" sein.Keine der geposteten Antworten hat bei mir funktioniert. Die Einstellung
position: absolute
für das untergeordnete Element hat jedoch funktioniert.quelle
position: fixed
relativ zu etwas außerhalb des übergeordneten Elements positioniert istvisibility: hidden
, ist es sichtbar. Sie müssen es jedoch häufig relativ zum übergeordneten Element positionieren (möchten), um gegenüber Codeänderungen robuster zu sein. Dann sind diese Lösungen keine Alternative.Dies ist eine alte Frage, die ich aber selbst gestellt habe.
Ich habe Halblösungen, die für die erstere Frage situativ funktionieren ("Kinder im Überlauf sichtbar: versteckte Eltern")
Wenn das übergeordnete div nicht position: relative sein muss, setzen Sie die untergeordneten Stile einfach auf sichtbarkeit: sichtbar.
Wenn das übergeordnete Div Position: relativ sein muss, war die einzige Möglichkeit, die ich den Kindern zeigen konnte, Position: fest. Das hat in meiner Situation zum Glück funktioniert, aber ich würde mir vorstellen, dass es in anderen nicht funktionieren würde.
Hier ist ein beschissenes Beispiel, das Sie einfach in eine HTML-Datei posten, um es anzuzeigen.
quelle
left
. Die Verwendung vonmargin-left
stattdessen würde den gleichen Effekt erzielen, sodass ich die relative Position nicht mehr verwenden musste.Wenn Clearfix dies für Sie nicht löst, fügen Sie dem nicht schwebenden Geschwister Ränder hinzu, die der Breite (n) der schwebenden Geschwister entsprechen.
quelle