私が見たさまざまなCSSレイアウトモデルで対処されていない質問があるので、ここに投稿しようと思いました。
基本的な流体/固定2列レイアウトを使用するサイトで作業しています。サイトのコンテンツは左側のdivにあり、サイドバーは右側にあります。サイドバーの幅は200ピクセル程度に固定されており、コンテンツは親の残りの幅を埋めるために拡張されます。
コードは次のようになります。
<div style="width: 90%; margin: 10px auto 10px auto;"> <!-- site container -->
<div style="margin-right: 200px;">Content goes here.</div>
<div style="float: right; width: 200px;">Menus goes here.</div>
<div style="clear: both;"></div> <!-- float-clearer div -->
</div>
これはかなり標準的なアプローチであり、ほとんどの場合正常に機能しますが、問題は、サイトのデザインでサイドバーが特定の場合にのみ表示される必要があることです。すべてのHTMLはPHPを介して生成され、「get-content()」関数は「get-sidebar()」関数が呼び出されるかどうかを認識しません。
サイドバーが呼び出されたら、サイドバー用の十分なスペースを残しながら、コンテンツを拡張して親divを埋めたいと思います。サイドバーがない場合は、コンテンツが親の幅全体に広がるように拡張する必要があります。
PHP / JavaScriptに依存せずに、CSSでこれを行う方法はありますか(おそらくコンテンツマージンに「自動」を使用します)?