Heim > Web-Frontend > CSS-Tutorial > Warum funktioniert „margin: auto' nicht mit absolut positionierten Elementen?

Warum funktioniert „margin: auto' nicht mit absolut positionierten Elementen?

Barbara Streisand
Freigeben: 2024-10-30 18:31:31
Original
535 Leute haben es durchsucht

Why Doesn't

Verstehen des Problems mit der automatischen Absolutpositionierungsmarge

Beim Anwenden von „position: absolute“ auf ein Element mit „margin-left: auto“ und „ margin-right: auto“ bemerken Sie möglicherweise, dass die Ränder scheinbar keine Wirkung haben. Dieses Verhalten unterscheidet sich von „position: relative“, wo die Ränder wie erwartet funktionieren. Um diese Diskrepanz zu verstehen, lassen Sie uns tiefer in die zugrunde liegende Mechanik eintauchen.

Wenn ein Element absolut positioniert ist, wird es aus dem normalen Fluss des Dokuments entfernt. Dies bedeutet, dass es nicht mehr mit seinen Nachbarelementen interagiert und seine Größe ausschließlich durch seine expliziten Abmessungen oder durch die Größe seines Containers bestimmt wird. Wenn die Breite des Elements nicht explizit festgelegt ist, ist der vom Browser berechnete Wert daher „auto“, was in den meisten Fällen 0 ist.

In diesem Szenario wird „margin-left: auto“ und angewendet „margin-right: auto“ versucht, Platz um das Element herum zu schaffen, indem der linke und rechte Rand auf die halbe Breite des Elements festgelegt werden. Da jedoch die berechnete Breite des Elements 0 ist, wird auch der berechnete Randwert zu 0. Aus diesem Grund scheinen die Ränder keine Auswirkung zu haben.

Im Gegensatz dazu bleibt das Element bestehen, wenn „Position: relativ“ verwendet wird im normalen Fluss des Dokuments. Seine Größe wird durch seinen Inhalt und den Platz bestimmt, den es innerhalb des Flusses einnimmt. Wenn „margin-left: auto“ und „margin-right: auto“ angewendet werden, werden die Ränder basierend auf der tatsächlichen Breite des Elements berechnet, die in diesem Fall ungleich Null ist. Daher werden die Ränder korrekt angewendet, was dazu führt, dass das Element innerhalb seines enthaltenden Elements zentriert wird.

Um ein absolut positioniertes Element zu zentrieren, können Sie seine Breite und Höhe angeben und dann „position: absolut; links: 50“ verwenden %; transform: Translate(-50%, -50%);" um es in seinem Behälter zu zentrieren. Diese Methode positioniert das Element genau an der gewünschten Stelle, auch wenn die Ränder auf „Auto“ eingestellt sind.

Das obige ist der detaillierte Inhalt vonWarum funktioniert „margin: auto' nicht mit absolut positionierten Elementen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage