と混同していposition: absolute
ます。フローティングは、要素を左または右に移動し、他の要素がその周りに「浮かぶ」ようにしますが、それらはまだフロー内にあり、他の要素はそれによって影響を受けます.
を使用する場合position: absolute
、要素をフローから削除して、他の要素の上または下に配置します。
これが更新された fiddleです。最も重要な変更点は次の部分です。
.content-area {
background-color: #bbb;
height: 310px;
position: relative;
}
.left-sidebar {
position: absolute;
top: 0;
left: 0;
width: 50px;
height: 100%;
background-color: #abcdef;
}
.right-sidebar {
position: absolute;
top: 0;
right: 0;
width: 50px;
height: 100%;
background-color: #abcdef;
}
親にも位置が与えられているため、サイドバーはその中の位置にすることができます。左サイドバーと右サイドバーは、それぞれ親の上部と左端と右端に配置されます。
よく見ると、メイン コンテンツ ブロックのコンテンツがサイド バーの後ろにあることがわかります。左のバーの下から見えるように、テキストを少し長くしました。
もちろん、これはおそらくあなたが望むものではありませんが、マークアップの順序を変更することで非常に簡単に解決できます。最初に好きな順序でサイドバーを追加してから、メイン コンテンツを追加します。結果はこちらでご覧いただけます。
これが機能する方法: コンテンツ領域の上部で、左側のサイド バーが最初に開始されます。左にフロートし、次の要素がその隣にフロートするように促し、同じ上の位置に配置します。その要素は、右にフロートする右側のサイド バーになり、次の要素がその左にフロートするように促します。メイン領域には明示的な幅がないため、同じ上部位置から開始して、その間にぴったりと収まるように計算されます。
メイン要素自体はフロートしないため、次の要素はメイン領域が終了する場所 (上) から開始されます。したがって、右のバーがメイン エリアの後に来る場合は、例のように下に移動します。メイン エリアのコンテンツが大きくなると、右のバーはさらに下に移動します。