回答:
追加するdisplay:block;と動作します。画像はデフォルトでインラインです
明確にするために、block要素のデフォルトの幅はですauto。これはもちろん、要素を含む要素の使用可能な幅全体を埋めます。
マージンを設定することによりauto、ブラウザの割り当て半分に残りのスペース、margin-leftおよびその他の半分にmargin-right。
margin:autoフローの中心にアイテムを配置するために何が必要かについて詳しく説明した場合、すばらしい答えが得られます。(display:blockまたはdisplay:table、position:staticまたはposition:relative、など)
0px autoしただけautoではうまくいきません。
いくつかの状況下で継承(例えばIE、ヤモリ、Webkitの以前のバージョンのように)を有する要素がposition:relative;防止されるmargin:0 auto;場合であっても、作業からtop、right、bottom、及びがleft設定されていません。
要素をposition:static;(デフォルト)に設定すると、このような状況で要素が修正される場合があります。通常、指定された幅のブロックレベル要素は、またはのmargin:0 auto;どちらrelativeかを使用して尊重しますstatic。
margin: 0 autoフロートがなく、幅が指定されたブロック要素である限り、相対的に配置された要素で問題なく動作します...
floatし、displayその動作を変更することができます。
あなたは自動幅divを中央に置くことができます display:table;
div{
margin: 0px auto;
float: none;
display: table;
}
私の場合、問題は幅自体なしで最小幅と最大幅を設定したことでした。
position:static、固定有しwidth:セットすることdisplay:block要素
widthとaddを追加しない場合は常に、機能しないmargin:autoと思います。私の経験からです。幅は、等しいマージンを提供する必要がある場所を正確に示します。
これを使用する方法の代わりに、margin-left:auto; margin-right: auto;またはこれmargin:0 auto;を使用するposition:absolute;方法があります:
要素の左側の位置を50%(left:50%;)に設定しますが、要素を正しく中央に配置しないため、要素を正しく中央に配置するには、幅のマイナス半分のマージン。要素を完全に中央に配置します
ここに例があります:http : //jsfiddle.net/35ERq/3/