2012-02-16 10 views
63
<div style="display: inline-block; margin: 0 auto;"> 
    <input id="abc" type="button" value="button" /> 
</div> 

私は上記のコードをコンテンツの幅と同じに設定してからマージンを0に設定します。div with display:インラインブロックマージン0自動中心ではありません

しかし、それは私のブラウザでは機能しませんでした。なにか提案を?

ところで、widthプロパティを設定すると、正常に動作します。

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

を試してみてください*** – xandercoded

+2

いいえ、そうではありません。私の答えを見てください。 –

+0

@ Xanderコメントごとに、幅なしで、DIVはそのコンテナの100%に展開されます。したがって、 "margin:0 auto"は、100%幅よりも小さいものが必要になるため、効果を示さない可能性があります。ボタンを中央に配置しようとしているだけの場合は、テキストを中央揃えにするのではなく、すなわち、 DIVスタイルの "text-align:center"私はINPUTタグが自然にインラインであると思うので、DIV> – jmbertucci

答えて

128

display:table;あまりにも中央でそれを配置します:

CSS:

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

HTML:

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

注:インラインスタイルを使用すると、悪い習慣です。

+5

ディスプレイ:テーブル作品! – etlds

+4

http://www.quirksmode.org/css/display.html#tableここで良い説明 – etlds

+2

しかしIE <= 7では動作しません。 – kapa

42

あなたがinline-blockするDIVを要求しているので、text-align: center;が答えです。

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

'text-align:center;'は、div自体ではなく、divのinline * content *を中心にします。 – yatskevich

+0

Pardon、CSSの消去を忘れました。ごめんなさい。 –

+0

いいえ、それは私が欲しいものではありません。私はdiv自体を中心にしたい。 – etlds

1

必要な***幅がある

body {text-align: center;}