固定幅のサイドカラムを使用すると、実際には非常に簡単です。あなたはフロートを使いたいと思うでしょう、そしてあなたの特定のデザインの必要性に応じて、偽の柱のトリックをする必要があるかもしれません。
次のようなものが必要になります。
<div class="left"></div>
<div class="right"></div>
<div class="middle">Content</div>
と:
div {
/* border-box, to make sure "width" is our intended width */
-moz-box-sizing: border-box; /* Firefox still uses prefix */
box-sizing: border-box;
}
.left {
float: left;
width: 100px;
background: #f00;
}
.right {
float: right;
width: 100px;
background: #00f;
}
.middle {
width: 100%;
padding: 0 100px;
background: #ccc;
}
ここで実際の動作を確認してください(これにはフェイクカラム効果はありませんが、出発点になるはずです)。出力でセクションの幅を変更すると、列が配置されたままになり、コンテンツが外側の列の境界内にとどまることがわかります。
コンテンツ列はまだドキュメントフローにあるため、最後にする必要があります。そのため、右側の列はコンテンツの下に表示されます。
position: absolute;
または、サイドコラムで次のように使用することもできます。
.wrapper {
position: relative; /* Constrains the columns within their parent. Not needed if parent is <body> */
}
.left {
position: absolute;
top: 0;
left: 0;
}
.right {
position: absolute;
top: 0;
right: 0;
}
.middle {
padding: 0 100px;
}
div {
-moz-box-sizing: border-box;
box-sizing: border-box;
}
これらのトリックは、IE8 +、Firefox、Chrome、Safari、およびOperaで機能します。box-sizing
IE7は、W3Cボックスモデル(「コンテンツボックス」)を使用し、 CSSを認識しないために問題が発生する可能性がありますが、必要に応じて動作させるためのいくつかのトリックがあります。IE6は、デフォルトで「ボーダーボックス」ベースのボックスモデルを使用しているため、問題ないはずです。z-index
( IEを動作させるには、さまざまな操作が必要になる場合があります。その場合は、左右の列を設定.middle{ position: relative; z-index: 1}
して追加します。)z-index: 2
このposition: absolute
トリックには、サイドバーをコンテンツdivの前または後に表示できるという点で、floatのものよりも優れているため、よりセマンティックなオプションになる可能性があります。
これらの作業の理由は、a)サイド列が固定されているため、パディングをそれらの列の幅に設定し、b)ドキュメントフローから要素を削除するためですposition: absolute
。float: [left/right]
つまり、ドキュメントに関する限り、 、それらはそこになく、スペースを取りません。これにより、他の要素を以前の場所に移動して、それらを互いに重ねることができます。