margin: 0 auto;
は、定義されたwidth
を必要とします。私の貧弱な解決策では#outman
はdisplay: inline;
で実際の幅が得られ、さらに<div id="container">
には自動余裕があります。 javascriptのは、新しいdiv要素に真の幅を設定するために必要とされる:
HTML:
<div id="container">
<div id="outman">
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>
</div>
CSS:
#container {
margin: 0 auto;
}
#outman {
display: inline;
}
#outman div {
display: inline-block;
width: 200px;
height: 200px;
border: 5px solid red;
}
のjavascript:
$(document).ready(function() {
$('#container').width($('#outman').width());
});
はまた、私
exampleを参照してください。
=== === UPDATE
あなたはhtmlコード内のコンテナの後にスクリプトを直接移動し、$(document).ready()
を削除する場合は高速になります。
<div id="container">
<div id="outman">
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>
</div>
<script type="text/javascript">
$('#container').width($('#outman').width());
</script>
はまた、私updated exampleを参照してください。
=== === UPDATE
ウィンドウのサイズ変更の場合:
<head>
...
<script type="text/javascript">
$(window).resize(function() {
$('#container').css('width', 'auto');
$('#container').width($('#outman').width());
});
</script>
...
</head>
<body>
...
<div id="container">
<div id="outman">
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>
</div>
<script type="text/javascript">
$(window).resize();
</script>
...
</body>
とnew example。
これは良いjavascriptの解決策ですが、私はJavaScriptでそれを行うことはできません。問題は、ページが読み込みにかなりの時間(約1秒)を要し、javascriptが 'document.ready'でのみ起動するため、ブロックが事実の後に真ん中にスナップするように見えるということです。 –
私は自分の答えを更新し、この時間を大幅に短縮できることを願っています。 – scessor