次のレイアウトを作成しようとしています。
+-------------------------------------------------+
| Header + search (Twitter navbar) |
+------------+------------------------------------+
| | |
| | |
|Navigation | Content column |
| | |
| | |
| | |
| | |
| | |
| | |
+------------+------------------------------------+
| Footer |
+-------------------------------------------------+
レイアウトは使用可能なすべての高さと幅を使用する必要があり、ナビゲーションとコンテンツ列は使用可能なすべてのスペースを使用し、オーバーフローでスクロールし、フッターは下部に固定する必要があります。
HTML は次のようになります。
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Bootstrap 101 Template</title>
<!-- Bootstrap -->
<link href="css/bootstrap.min.css" rel="stylesheet" media="screen">
<link href="css/bootstrap-responsive.min.css" rel="stylesheet" media="screen">
<link href="css/app.css" rel="stylesheet" media="screen">
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script src="js/bootstrap.min.js"></script>
<script src="js/app.js"></script>
</head>
<body>
<div class="container-fluid">
<div class="navbar">
<!-- navbar content -->
</div>
<div class="row-fluid columns">
<div class="span2 article-tree">
<!-- navigation column -->
</div>
<div class="span10 content-area">
<!-- content column -->
</div>
</div>
<div class="footer">
<!-- footer content -->
</div>
</div>
</body>
</html>
CSS:
body, html, .container-fluid { /// take all available height
height: 100%;
}
.article-tree {
color: #DCE6E5;
background: #2F323B;
}
.content-area {
overflow: auto;
height: 100%; /// explicit height to make scrolling work
}
.columns {
height: 100%; /// columns should take all height
margin-top: 42px; /// minus header
margin-bottom: 20px; // minus footer
}
.columns > div {
height: 100%; // make each column to take all available height
}
.footer {
background: red;
height: 20px;
}
理論的には動作するはずですが、columns.margin は期待どおりに動作しません。height = 100% - magin にすればいいと思ったのですが、コンテナを動かすだけです。
私はグーグルで、StackOverflowに関する多くの質問を見てきました。それらにはすべて、JavaScript または位置 (絶対および手動の位置) が含まれます。私見は、解決策というよりもハックです。この問題を解決するには、よりシンプルでエレガントなクロスブラウザの方法が必要だと思います。
では、上記のレイアウトを作成するにはどうすればよいでしょうか。たぶんBootstrapが私を助けることができますか(私はドキュメントを調べましたが、このようなケースについての言及はありません)?