自動マージンが画像をページの中央に配置しない


97

この例の画像がセンタリングされていません。どうして?私のブラウザーはWindows 7のGoogle Chrome v10で、IEではありません。

<img src="/img/logo.png" style="margin:0px auto;"/>

スタイルクラスをテストしてみたところ、これは有効なマージン0 autoではないことがわかりましたいくつかのテストの後、要素に追加しているクラス名が要素と同じ名前である場合、これは機能しないことがわかりました。
LostLight 2015年

回答:


218

追加するdisplay:block;と動作します。画像はデフォルトでインラインです

明確にするために、block要素のデフォルトの幅はですauto。これはもちろん、要素を含む要素の使用可能な幅全体を埋めます。

マージンを設定することによりauto、ブラウザの割り当て半分に残りのスペース、margin-leftおよびその他の半分にmargin-right


12
+1正しいこと。margin:autoフローの中心にアイテムを配置するために何が必要かについて詳しく説明した場合、すばらしい答えが得られます。(display:blockまたはdisplay:tableposition:staticまたはposition:relative、など)
Phrogz '20

1
@Phrogzは同意した。いくつかの説明を追加しました。
ロス

15
これを読んでいる人は、他の種類のフロートがあるとマージンautoが破綻するので、「フロート」なしを追加すると便利な場合もあります。
Code Whisperer 2013年

しかし、それはまだ中心化されていません。水平方向の中央のみです。垂直方向に中央揃えにしたいのですが、変更0px autoしただけautoではうまくいきません。
アーロンフランケ

14

いくつかの状況下で継承(例えばIE、ヤモリ、Webkitの以前のバージョンのように)を有する要素がposition:relative;防止されるmargin:0 auto;場合であっても、作業からtoprightbottom、及びがleft設定されていません。

要素をposition:static;(デフォルト)に設定すると、このような状況で要素が修正される場合があります。通常、指定された幅のブロックレベル要素は、またはのmargin:0 auto;どちらrelativeかを使用して尊重しますstatic


1
margin: 0 autoフロートがなく、幅が指定されたブロック要素である限り、相対的に配置された要素で問題なく動作します...
Ennui

それは皮肉だと思います。回答が不正確にならないように回答を編集した場合、反対票を削除します。私は、ほぼ15年間、CSSを書いてきたし、今までに自動マージンが水平に比較的位置固定幅の要素中心に働いていない覚えていないことができます-他のプロパティもののなどをfloatし、displayその動作を変更することができます。
Ennui 14

14

あなたは自動幅divを中央に置くことができます display:table;

div{
margin: 0px auto;
float: none;
display: table;
}

1
これは機能しますが、理由はわかりません。説明してもらえますか?
ThatsJustCheesy

1
私はこれを以前に使用したことがありませんが、今はうまくいきます。
zkytony

10

私の場合、問題は自体なしで最小幅と最大幅を設定したことでした。


3
要約する:要素である必要がありposition:static、固定有しwidth:セットすることdisplay:block要素
ジョイT

私にとっても幅の問題でした-ブートストラップは自動的にdivを100%使用できるように設定しました
Edmund Sulzanok

6

widthとaddを追加しない場合は常に、機能しないmargin:autoと思います。私の経験からです。幅は、等しいマージンを提供する必要がある場所を正確に示します。


2

これを使用する方法の代わりに、margin-left:auto; margin-right: auto;またはこれmargin:0 auto;を使用するposition:absolute;方法があります:
要素の左側の位置を50%(left:50%;)に設定しますが、要素を正しく中央に配置しないため、要素を正しく中央に配置するには、幅のマイナス半分のマージン。要素を完全に中央に配置します

ここに例があります:http : //jsfiddle.net/35ERq/3/



0

これを本文のcssに入れます:background:#3D668F; 次に追加:表示:ブロック; マージン:自動; imgのCSSに。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.