Wenn die absolute Positionierung ein Element mit top
, right
, bottom
und left
Sie es eine gewisse Distanz in Bewegung sind aus, dass Elemente Kanten. Es wird es in Bezug auf das zuletzt positionierte Element verschieben. Das letzte Positionselement ist das nächste Vorfahrelement, für das über CSS eine beliebige Positionierung angewendet wird. Wenn kein Vorfahrelement als Positionierungssatz festgelegt ist, wird das Ansichtsfenster als Referenz verwendet.
Ich habe ein schnelles Diagramm erstellt, um zu zeigen, was vor sich geht.
left: 50%;
bewegt sich der linke Rand des Elements 50% (die Hälfte) der Breite der letzten linken Kante des positioniertes Element. Sie verschieben Elemente auf der rechten Seite, indem Sie den Abstand zwischen den linken Kanten des Elements erhöhen.
margin-left: <negative value>;
wird auf die Hälfte der Elementbreite gesetzt und zieht sie nach links zurück. Dies behebt das Off-Center-Problem, das Sie sehen.
Heute werden viele Menschen mit margin-left
mit einem negativen Wert verzichten und sich für transform: translateX(-50%);
entscheiden. Dies ermöglicht ihnen, flexibler zu sein, da die Breite der Elemente nicht bekannt sein muss.
Die CSS für transform: translateX(-50%);
könnte wie folgt aussehen:
JSFiddle
div {
position: absolute;
left: 50%;
border: 2px dashed red;
width: 200px;
height: 100px;
transform: translateX(-50%);
}
Demo.
Wenn Sie nur etwas horizontal zentrieren möchten und eine Breite angewendet haben (px
, %
, usw.), können Sie margin: 0 auto; width: <width value>;
verwenden. Eine Breite muss eingestellt sein, damit margin: 0 auto;
funktioniert!
Beispiel:
div {
margin: 0 auto;
width: 25%;
height: 100px;
border: 2px dashed red;
}
Demo JSFiddle.
Bitte klären Sie Ihr spezielles Problem oder fügen Sie weitere Details genau zu markieren, was Sie brauchen. Wie es derzeit geschrieben wird, ist es schwer zu sagen, was genau Sie fragen. –