いくつかの理由から、サイドバーを完全に右側に配置しています。しかし問題は、メイン コンテンツ領域が短い場合、サイドバーがコンテンツを超えてはみ出してしまうことです。
CSS を使用して、コンテナの高さをサイドバーの周りにラップさせる方法はありますか (サイドバーが長い場合)。
このjsFiddleをしてください:http://jsfiddle.net/52jjp/
いくつかの理由から、サイドバーを完全に右側に配置しています。しかし問題は、メイン コンテンツ領域が短い場合、サイドバーがコンテンツを超えてはみ出してしまうことです。
CSS を使用して、コンテナの高さをサイドバーの周りにラップさせる方法はありますか (サイドバーが長い場合)。
このjsFiddleをしてください:http://jsfiddle.net/52jjp/
悲しいことに、ストレートな CSS でこれを行う方法はありません。何かを絶対に配置すると、ドキュメント フローから削除されるため、親の高さには影響しなくなります。
@scott-brownがすでに提案しているように、javascriptで解決できます。
ただし、私はすべての CSS ソリューションを好みます。このマークアップを使用すると、どちらの側が長くてもクリアされるフロートを使用してサイドバー レイアウトを取得できます。
<div class="page">
<div class="content">
Primary content here.
</div>
<div class="sidebar">
Sidebar content here.
</div>
</div>
そしてこのCSS:
.primary {
float: left;
width: 66%;
}
.sidebar {
float: right;
width: 33%;
}
.page:after {
content: ".";
display: block;
height: 0;
clear: both;
visibility: hidden;
zoom: 1;
}
のスタイル.page
は clearfix と呼ばれます (詳細はこちら)。
このレイアウト手法の優れた点は、マークアップを変更せずに と の列を に変更するだけで、.primary
との列を交換できることです。.sidebar
float:left
float:right
また、clearfix は、親要素に子が含まれることを意味するため、必要に.page
応じて背景色を設定でき、長い方の列の一番下まで拡張されます。
サイドバーの高さが固定の場合は、 または にmin-height{...}
設定.main-content
できます。.pad
絶対配置された要素を「クリア」するのは簡単ではありません。私が見つけた 1 つの方法は、jquery で高さを取得し、その高さをコンテナーに適用することです。例えば:
$('#container').height($('#ab_positioned').height());