Meinen Sie damit, es vollständig von der Seite zu entfernen oder es einfach unsichtbar zu machen? Was meinst du mit "Interaktion mit seinen Nachbarn"?
Jason Hall
Was versuchst du zu erreichen?
Griegs
Ich dachte nur, es gäbe einen Weg, es zu tun, und ich konnte mich nicht erinnern, also wandte ich mich an Stackoverflow :) Position: Absolut funktioniert, aber ich habe mich nur gefragt
position: absoluteverursacht ein Neulackieren beim Scrollen, was sich
negativ
7
Dies ist nicht die Antwort, die ein Benutzer erwartet, wenn er hierher kommt, da der Titel "Aus dem Fluss entfernen" lautet. display: noneEntfernt das Element nicht nur vollständig aus dem Durchfluss.
jstice4all
116
Ein Trick, der position:absolutemir schmackhafter macht , ist, seine Eltern zu machen position:relative. Dann ist das Kind relativ zur Position des Elternteils "absolut".
Eine andere Möglichkeit besteht darin height: 0; overflow: visible;, ein Element festzulegen, das sich jedoch nicht wirklich außerhalb des Flusses befindet und daher das Zusammenbrechen des Randes unterbrechen kann .
Aber selbst dann ist es immer noch "in der Nachbarschaft". Die absolute Position relativ zum Körper ist der einzige Weg, um die volle Kontrolle über seine Position zu haben. Denken Sie daran, wenn das übergeordnete Element als relativ deklariert ist, ist der absolute Ursprung relativ dazu - in diesem Fall müssten Sie das Element an document.body oder ein nicht relatatives deklariertes Element anhängen.
Dan Heberden
4
Was? Die Position ist nicht relevant, wenn das Element nicht einmal angezeigt wird .
Greg Hewgill
In Firefox werden Überprüfungsnachrichten für Eingaben mit display: nonean einer unsinnigen Stelle angezeigt (oben auf dem Bildschirm, wobei die Registerkarten verdeckt werden). Es scheint, dass nicht angezeigte Elemente wirklich positionlos sind, zumindest in diesem Browser.
Brilliand
3
Wenn Sie es schweben lassen, wird der Fluss neu organisiert, aber die Position: Absolut ist die einzige Möglichkeit, ihn vollständig aus dem Fluss des Dokuments zu entfernen.
position: fixed;wird auch ein Element aus dem Fluss "herausspringen", wie Sie sagen. :) :)
position: absolutemuss von einer Position begleitet werden. z.Btop: 1rem; left: 1rem
position: fixedPlatziert das Element jedoch an der Stelle, an der es normalerweise gemäß dem Dokumentfluss angezeigt wird, verhindert jedoch, dass es sich danach bewegt. Außerdem wird die Höhe effektiv auf 0px (in Bezug auf den Dom) gesetzt, sodass das nächste Element darüber verschoben wird.
Dies kann ziemlich cool sein, da Sie festlegen können position: fixed; z-index: 1(oder welchen Z-Index Sie auch immer benötigen), damit er über dem nächsten Element "erscheint".
Dies ist besonders nützlich für Überschriften mit fester Position, die beispielsweise beim Scrollen oben bleiben.
Ich weiß, dass diese Frage mehrere Jahre alt ist, aber ich denke, Sie versuchen es so zu bekommen, dass ein großes Element wie ein Bild die Höhe eines Div nicht beeinträchtigt?
Ich bin gerade auf etwas Ähnliches gestoßen, bei dem ich wollte, dass ein Bild ein Div überflutet, aber ich wollte, dass es am Ende einer Textfolge steht, also wusste ich nicht, wo es enden würde.
Eine Lösung, die ich herausgefunden habe, bestand darin, die Höhe des unteren Randes des Elements anzugeben. Wenn das Bild also 20 Pixel hoch ist,
margin-bottom: -20px;
vertical-align: top;
zum Beispiel.
Auf diese Weise schwebte es über die Außenseite des Div und blieb neben dem letzten Wort in der Zeichenfolge.
Ich benutze es, wenn ich die absolute Position nicht verwenden kann, zum Beispiel beim Drucken, wenn Sie page-break-after: always;nur mit funktionieren position:relative.
Antworten:
Keiner?
Ich meine, abgesehen davon
display: none
, dass ich es komplett aus dem Layout entfernt habe , bin ich mir ziemlich sicher, dass es das ist.Stehen Sie vor einer bestimmten Situation, in der dies
position: absolute
keine praktikable Lösung ist?quelle
position: absolute
verursacht ein Neulackieren beim Scrollen, was sichdisplay: none
Entfernt das Element nicht nur vollständig aus dem Durchfluss.Ein Trick, der
position:absolute
mir schmackhafter macht , ist, seine Eltern zu machenposition:relative
. Dann ist das Kind relativ zur Position des Elternteils "absolut".jsFiddle
quelle
Eine andere Möglichkeit besteht darin
height: 0; overflow: visible;
, ein Element festzulegen, das sich jedoch nicht wirklich außerhalb des Flusses befindet und daher das Zusammenbrechen des Randes unterbrechen kann .quelle
::before
mit absoluter Positionierung, um den Hintergrund zu emulieren.Es gibt
display: none
, aber ich denke, das könnte ein bisschen mehr sein als das, wonach Sie suchen.quelle
display: none
an einer unsinnigen Stelle angezeigt (oben auf dem Bildschirm, wobei die Registerkarten verdeckt werden). Es scheint, dass nicht angezeigte Elemente wirklich positionlos sind, zumindest in diesem Browser.Wenn Sie es schweben lassen, wird der Fluss neu organisiert, aber die Position: Absolut ist die einzige Möglichkeit, ihn vollständig aus dem Fluss des Dokuments zu entfernen.
quelle
position: fixed;
wird auch ein Element aus dem Fluss "herausspringen", wie Sie sagen. :) :)position: absolute
muss von einer Position begleitet werden. z.Btop: 1rem; left: 1rem
position: fixed
Platziert das Element jedoch an der Stelle, an der es normalerweise gemäß dem Dokumentfluss angezeigt wird, verhindert jedoch, dass es sich danach bewegt. Außerdem wird die Höhe effektiv auf 0px (in Bezug auf den Dom) gesetzt, sodass das nächste Element darüber verschoben wird.Dies kann ziemlich cool sein, da Sie festlegen können
position: fixed; z-index: 1
(oder welchen Z-Index Sie auch immer benötigen), damit er über dem nächsten Element "erscheint".Dies ist besonders nützlich für Überschriften mit fester Position, die beispielsweise beim Scrollen oben bleiben.
quelle
Ich weiß, dass diese Frage mehrere Jahre alt ist, aber ich denke, Sie versuchen es so zu bekommen, dass ein großes Element wie ein Bild die Höhe eines Div nicht beeinträchtigt?
Ich bin gerade auf etwas Ähnliches gestoßen, bei dem ich wollte, dass ein Bild ein Div überflutet, aber ich wollte, dass es am Ende einer Textfolge steht, also wusste ich nicht, wo es enden würde.
Eine Lösung, die ich herausgefunden habe, bestand darin, die Höhe des unteren Randes des Elements anzugeben. Wenn das Bild also 20 Pixel hoch ist,
margin-bottom: -20px; vertical-align: top;
zum Beispiel.
Auf diese Weise schwebte es über die Außenseite des Div und blieb neben dem letzten Wort in der Zeichenfolge.
quelle
Der Vollständigkeit halber: Die
float
Eigenschaft entfernt auch ein Element aus dem HTML-Fluss, zfloat: right
quelle
Versuchen Sie dies zu verwenden:
position: relative; clear: both;
Ich benutze es, wenn ich die absolute Position nicht verwenden kann, zum Beispiel beim Drucken, wenn Sie
page-break-after: always;
nur mit funktionierenposition:relative
.quelle