Ich habe 3 div
Elemente.
1. div
ist größer (Wrap) und hatposition:relative;
Die 2. div
Position ist absolut zur 1. div
relativen Positionierung positioniert (und in der 1. Position enthalten div
).
3. div
ist im 2. enthalten div
und hat auch absolute Positionierung.
<div id="1st">
<div id="2nd">
<div id="3rd"></div>
</div>
</div>
Warum ist die 3. div
Position absolut zur 2. Position div
(die auch die absolute Position zur 1. Position ist div
) und nicht zur 1. div
Position, die eine relative Position hat?
Denn die 3. div
Position ist die absolute Positionierung zur absolut positionierten 2 div
..
html
css
css-position
Pufos
quelle
quelle
Antworten:
Weil
position: absolute
die relative Position für Kinder genauso zurückgesetztposition: relative
wird.Daran führt kein Weg vorbei - wenn Sie möchten, dass der dritte
div
absolut relativ zum ersten positioniert ist, müssen Sie ihn zum Kind des ersten machen.quelle
0px / 0px
Position für Kinder wird vomposition: absolute
position:relative
bedeutet, dass das Element relativ zu seiner aktuellen Position positioniert wird (oben, rechts, unten links).position: absolute
bedeutet, dass es relativ zum Browserfenster oder zum ersten übergeordneten Element mitposition: absolute
oder positioniert wirdposition: relative
.Beide
position:relative
undposition:absolute
etablieren enthaltende Elemente als Positionierungs-Ascestoren.Wenn Sie möchten, dass Div 3 basierend auf Div 1 positioniert wird, machen Sie es zu einem direkten Kind von Div 1.
Beachten Sie, dass
position: relative
das Element relativ zu seiner natürlichen Position positioniert ist undposition: absolute
dass das Element relativ zu seinem erstenposition:relative
oderposition:absolute
Vorfahren positioniert ist .quelle
Position statisch: Die statische Position ist die Standardmethode, mit der ein Element im normalen Ablauf Ihrer HTML-Datei angezeigt wird, wenn überhaupt keine Position angegeben ist.
Wichtig:
top
,right
,bottom
undleft
haben Eigenschaften , keine Auswirkung auf Statisch ELEMENT AUFGE.Position relativ: Wenn Sie ein Element mit dem relativen Wert positionieren, bleibt das Element (und der Platz, den es einnimmt) im normalen Fluss Ihrer HTML-Datei.
Anschließend können Sie das Element um einen gewissen Betrag bewegen , um die Eigenschaften mit
left
,right
,top
undbottom
. Dies kann jedoch dazu führen, dass das Element andere Elemente auf der Seite überlappt. Dies kann der gewünschte Effekt sein oder auch nicht.Ein relativ positioniertes Element kann sich von seiner Stelle bewegen, aber der Platz, den es einnimmt, bleibt erhalten.
Position absolut: Durch Anwenden des absoluten Positionswerts auf ein Element wird es aus dem normalen Fluss entfernt. Wenn Sie das absolut positionierte Element verschieben, ist sein Referenzpunkt der obere / linke Rand des nächstgelegenen enthaltenen Elements, dessen Position nicht statisch deklariert ist - auch als nächstgelegener Positionierungskontext bezeichnet. Wenn also kein enthaltendes Element mit einer anderen Position als statisch vorhanden ist, wird es von der oberen linken Ecke des Körperelements aus positioniert.
In Ihrem Fall ist der nächstgelegene Behälter des 3. der 2 ..
quelle
Noch eine klarstellende Antwort.
Ihr aktuelles Szenario lautet wie folgt:
Und du kämpfst irgendwie damit.
Wenn Sie den HTML-Code ändern können, gehen Sie einfach wie folgt vor:
quelle
Der Grund, warum das 3.
div
Element absolut zum 2.div
Element positioniert ist, liegt darin, dass, wie in der CSS-Spezifikation hier erläutert , das "übergeordnete" Element (besser gesagt: Block enthalten) eines absolut positionierten Elements nicht unbedingt sein unmittelbares übergeordnetes Element ist, sondern vielmehr sein unmittelbar positioniertes Element, dh jedes Element, dessen Position auf etwas anderes alsstatic
zum Beispiel eingestellt istposition: relative/absolute/fixed/sticky;
Wenn Sie also möchten, dass das 3.
div
Element in Bezug auf das 1. Element absolut in Bezug auf das 1. Element positioniert istdiv
, sollten Sie Ihr 2.div
Element alsposition: static;
Standardwertposition: ...
festlegen (oder einfach eine Deklaration im Regelsatz Ihres 2.div
Elements entfernen ). .Das Obige macht den 1.
div
zum enthaltenden Block des 3. absolut positioniertdiv
, wobei der 2.div
für diesen Positionierungszweck ignoriert wird .Ich hoffe es hilft.
quelle
Für den Fall, dass noch jemand nach einer Antwort darauf sucht.
Ich konnte dieses Ergebnis erzielen, indem ich
clear: both;
dem ersten absolut positionierten Div einen Stil hinzufügte , der das Kind zurücksetzte und ihm erlaubte, seine eigeneabsolute
Positionierung zu verwenden.quelle