隣接する3つのdivで構成されるレイアウトが必要です。サイドのdivには静的な幅があり(JavaScriptによって変更される場合があります)、中央のdivは残りの領域を埋めます。最初のdivのサイズが変更されると、中央のdivのみに影響します。これは、3つの列で構成されるテーブル(動的レンダリングあり)に似ています。
わかりましたが、問題はどこにありますか。問題は、floating-left divを最初の列に入れ、2番目と3番目の列にブロックdivを入れると、ブロックdivが奇妙な動作をするということです。最初の列からフローティングdivの下の列に表示されます。
例。 1列目と2列目にはフローティングdivがあり、3列目にはブロックdivがあります。ブロックdivは、浮動divの高さを中心に下にシフトされます。中央の列のDivは、float型の左プロパティを持つことだけがy位置にシフトされません。
3つのレイアウトdivのそれぞれが互いに独立していることを望みます。 3番目の列の要素が最初の2列のfloat浮動小数点数(floatプロパティを使用)をフローする理由がわかりません。
コード:
<div style="margin: auto; display: table; width: 260px;">
<div style="display: table-row;">
<div style="display: table-cell; width: 100px;">
<div style="float: left; width: 40px; height: 50px;">COL1</div>
</div>
<div style="display: table-cell;">
<div style="float: left; height: 50px; width: 40px;">COL2</div>
</div style="display: table-cell; width: 100px;">
<div class="sideContainer">
<div>COL3</div>
</div>
</div>
</div>
そして結果: result
それを修正する方法。すべてのレイアウトdiv(列)を互いに独立させる方法。何か案は?
これを行うには、col1とcol3を固定幅で左右にフロートさせます。
次に、col1とcol3の幅に等しいcol2に左右のマージンを追加します。
これにより、3つの列が得られます。 col1とcol3は固定幅で、col2は使用可能な幅を満たします。
(col2のコンテンツボックスは青、マージンは黄色)
<div class='container'>
<div class='right'>
col3
</div>
<div class='left'>
col1
</div>
<div class='middle'>
col2
</div>
</div>
.container {
overflow: hidden;
}
.right {
float: right;
width: 100px;
}
.left {
float: left;
width: 100px;
}
.middle {
margin: 0 100px;
}
ここで試してください: http://jsfiddle.net/22YBU/
ちなみに、display:table、display:table-rowおよびdisplay:table-cellが必要な場合は、テーブルを使用してください;-)