div mit Anzeige: Inline-Blockrand 0 automatisch nicht zentriert


72
<div style="display: inline-block; margin: 0 auto;">
    <input id="abc" type="button" value="button" />
</div>

Ich versuche, den obigen Code zu verwenden, um die Breite des Inhalts gleich einzustellen, und zentriere ihn dann mit dem Rand: 0 auto;

Aber es hat bei mir in keinem Browser funktioniert. Irgendein Vorschlag?

Übrigens, wenn ich die width-Eigenschaft einstelle, funktioniert es gut.

<div style="width: 10em; margin: 0 auto;">
    <input id="abc" type="button" value="button" />
</div>

Laut @ Xander-Kommentar wird ein DIV ohne Breite auf 100% seines Containers erweitert. "Margin: 0 auto" wird also wahrscheinlich keinen Effekt zeigen, da Sie etwas benötigen, das kleiner als 100% Breite ist. Wenn Sie nur versuchen, die Schaltfläche zu zentrieren, warum nicht einfach Text ausrichten? dh. "text-align: center" im DIV-Stil. Ich denke, INPUT-Tags sind natürlich inline, also sollte es sich innerhalb des DIV>
jmbertucci

1
@Fozzyuw, egal welche Breite notwendig ist oder nicht, wenn wir display: inline-block setzen, wird die Breite gleich ihrem Inhalt gesetzt.
etlds

Ihr zweites Beispiel funktioniert, weil Sie das entfernt haben display: inline-block. Wenn Sie es wieder hinzufügen, hat das Einstellen der Breite keine Auswirkung. Siehe jsfiddle.net/anEvF
Olaf Dietsche

1
Wenn Sie auf diesen Thread stoßen, aber keine der Antworten für Sie funktioniert, überprüfen Sie, ob Ihr Div nicht schwebt. margin: autospielt nicht gut mit float.
Skibulk

Antworten:


148

Anzeige: Tabelle; würde es auch in der Mitte positionieren:

CSS:

  .button{
    display: table;
    margin: 0 auto;
    }

HTML:

<div class="button">
<input id="abc" type="button" value="button" />
< /div>

Hinweis: Die Verwendung von Inline-Stilen ist eine schlechte Vorgehensweise.


11
@kapa Ich weiß, dass dies ein alter Kommentar ist, aber ich würde das wahrscheinlich als positiv betrachten. :)
Mawburn

52

Da Sie DIV angefordert haben inline-block, text-align: center;ist die Antwort.

<div style="text-align: center;">
<div style="display: inline-block; text-align: left;">
    <input id="abc" type="button" value="button" />
</div>
</div>

15
text-align: center;zentriert den Inline- Inhalt des Div, nicht des Div selbst.
Yatskevich

Verzeihung, ich habe vergessen, das CSS zu löschen. Es tut uns leid.
Rok Kralj

Nein, das will ich nicht. Ich möchte das Div selbst zentrieren.
etlds

2
Genau das, was ich brauchte. Vielen Dank.
Duarte Cunha Leão

2
Hinweis: Diese Diskussion ist veraltet. Die Antwort wurde seitdem so bearbeitet, dass sie ein Wrapper-Div enthält, sodass das innere, ursprüngliche Div zentriert ist. Also ist es was er will.
Kevin Wheeler

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.