赤、緑、青のdivでできたボックスが通常フローしています。
これにfloatを設定して次のように横並びにしたいのですが、うまくいきません。
通常フローのHTMLは次のようになっています。
<div id="wrapper"> <div class="red"></div> <div class="green"></div> <div class="blue"></div> </div>
フロートさせるためにcssは次のように指定します。
.red { background-color: #F00; height: 300px; width: 300px; float:right; } .green { background-color: #0F0; height: 300px; width: 300px; float:right; } .blue { background-color: #00F; height: 300px; width: 300px; float:left; } #wrapper { width:900px; border:5px solid #093; }
結果は次のようになります。
赤は真ん中に来てくれません。これはfloatの向きを変えてみても同様で真ん中には来ません。
ここでfloatと併用してpositionを設定します。floatと併用するにはpositionはrelativeにする必要があります。
‘position’の値が’absolute’あるいは’fixed’であれば、’display’は’block’に、’float’は’none’に(強制的に)設定されます。 ボックスの位置は、’top’、’right’、’bottom’、’left’という4つのプロパティと包含ブロックによって決まります。つまり、relativeならfloatとpositionの併用は可能です。
手順
- 緑は左にフロートし、赤と青を右にフロートさせます。これで左から緑、青、赤の順に並びます。
- 次にそれぞれ3つのdivにposition:relativeを設定します。
- 赤のdivを幅分だけ左に移動させます。left:-300pxとします。
- 緑はdivの幅分だけ右に移動させます。left:300pxとします。
.red { background-color: #F00; height: 300px; width: 300px; float:right; left:-300px; position:relative; } .green { background-color: #0F0; height: 300px; width: 300px; float:left; position:relative; } .blue { background-color: #00F; height: 300px; width: 300px; float:right; position:relative; left:300px } #wrapper { width:900px; border:5px solid #093; overflow:hidden; }
コメントを投稿するにはログインしてください。