Ich weiß, dass die Einstellung margin: 0 auto;
eines Elements verwendet wird, um es zu zentrieren (links-rechts). Ich weiß jedoch, dass das Element und sein übergeordnetes Element bestimmte Kriterien erfüllen müssen, damit der automatische Rand funktioniert, und ich kann nie scheinen, die Magie richtig zu machen.
Meine Frage ist also einfach: Welche CSS-Eigenschaften müssen für ein Element und sein übergeordnetes Element festgelegt werden, damit das untergeordnete Element margin: 0 auto;
von links nach rechts zentriert werden kann?
margin: 0 auto;
nur im Standardmodus korrekt verarbeitet , sodass Sie einen Doctype benötigen (als ob einer vorher nicht benötigt worden wäre).Antworten:
Aus dem Kopf:
display: block
oderdisplay: table
Aus den Köpfen anderer Leute:
width
, die nichtauto
2 istBeachten Sie, dass alle diese Bedingungen für das zentrierte Element gelten müssen, damit es funktioniert.
1 Es gibt eine Ausnahme: wenn Ihre festen oder absolut positionierten Element
left: 0; right: 0
, es wird mit Auto - Margen Zentrum .2 Funktioniert technisch gesehen
margin: 0 auto
mit einer automatischen Breite, aber die automatische Breite hat Vorrang vor den automatischen Rändern, und die automatischen Ränder werden als Ergebnis auf Null gesetzt, sodass es so aussieht, als ob sie "nicht funktionieren".quelle
ol start
Attribut (und es ist nicht möglich, in Markdown durchzuziehen) :(Auf den ersten Blick braucht es eine
width
. Sie müssen die Breite des zu zentrierenden Containers angeben (nicht die übergeordnete Breite).quelle
Vollständige Regel für CSS:
display: block
UNDwidth
nicht automatisch) ODERdisplay: table
float: none
position: relative
quelle
Wenn das Element kein Blockelement ist, machen Sie es so.
und geben Sie ihm dann eine Breite.
quelle
Es funktioniert auch mit display: table - eine nützliche Anzeigeeigenschaft in diesem Fall, da keine Breite festgelegt werden muss. (Ich weiß, dass dieser Beitrag 5 Jahre alt ist, aber für Passanten immer noch relevant ist;)
quelle
Stellen
div
Sie sicher, dass das, was Sie zentrieren möchten, nicht auf den Kopf meiner Katze eingestellt istwidth: 100%
.Wenn dies der Fall ist, sind die Regeln für die untergeordneten Divs von Bedeutung.
quelle
Bitte gehen Sie zu diesem kurzen Beispiel, das ich mit jsFiddle erstellt habe . Hoffentlich ist es leicht zu verstehen. Sie können ein
wrapper
Div mit der Breite der Site verwenden, um die Ausrichtung zu zentrieren. Der Grund, den Sie angeben müssen,width
ist, dass der Browser weiß, dass Sie sich nicht für ein flüssiges Layout entscheiden.quelle
Hier ist mein Vorschlag:
quelle
Es ist vielleicht interessant, dass Sie keine Breite für ein
<button>
Element angeben müssen , damit es funktioniert - stellen Sie nur sicher, dass es Folgendes hatdisplay:block
: http://jsfiddle.net/muhuyttr/quelle
Für jeden, der gerade diese Frage beantwortet und nicht in der Lage ist, sie zu beheben
margin: 0 auto
, ist Folgendes , das ich entdeckt habe, möglicherweise nützlich: Eintable
Element ohne angegebene Breite muss vorhanden seindisplay: table
und nichtdisplay: block
,margin: auto
damit es funktioniert. Dies mag für einige offensichtlich sein, da die Kombination ausdisplay: block
und dem Standardwertwidth
eine Tabelle ergibt, die erweitert wird, um ihren Container zu füllen. Wenn Sie jedoch möchten, dass die Tabelle ihre "natürliche" Breite annimmt und zentriert ist, müssen Siedisplay: table
quelle
display: block
Bedingung 4 der akzeptierten Antwort nicht erfüllt)margin: 0 auto
), und ich konnte auch die Breite der Tabelle nicht angeben, da ihr Inhalt unterschiedliche Breiten haben könnte. In diesem Fall ist die einzige Lösung, die funktioniert (dh die Tabelle wird normaldisplay: table
margin: 0 auto