これは IE9/10 固有の問題だと思います。次のように柔軟な行レイアウトを作成しようとしています:
|----------------------------------|
| FIXED HEIGHT |
|----------------------------------|
| FIXED HEIGHT, SOMETIMES HIDDEN|
|----------------------------------|
| |
| FLEXIBLE HEIGHT |
| |
|----------------------------------|
| FIXED HEIGHT |
|----------------------------------|
また、これの外側のコンテナーには、ブラウザーのビュー ポートに合わせて柔軟な高さと幅を持たせたいと考えています。
おそらく単純に、私は Chrome、Firefox、Safari、および IE9/10 しかサポートしていないのでdisplay: table
、display: table-row
,display: table-cell
が良い方法かもしれないと考えたので、次のように思いつきました:
jsFiddle: http://jsfiddle.net/Nugps/2/
HTML:
<div class="stage">
<div class="table">
<div class="row">
<div class="cell">
<div class="content1">one</div>
</div>
</div>
<div class="row">
<div class="cell">
<div class="content1">two</div>
</div>
</div>
<div class="row flexible">
<div class="cell">
<div class="content2">three</div>
</div>
</div>
<div class="row">
<div class="cell">
<div class="content1">four</div>
</div>
</div>
</div>
</div>
CSS:
* {
margin: 0;
padding: 0;
}
html, body {
height: 100%;
}
.stage {
position: absolute;
top: 15px;
right: 15px;
bottom: 15px;
left: 15px;
}
.table {
display: table;
height: 100%;
width: 100%;
background: lightblue;
}
.row {
display: table-row;
}
.cell {
display: table-cell;
border: 3px solid red;
height: 50px;
}
.row.flexible {
height: 100%;
}
.row.flexible .cell {
height: 100%;
}
.content2 {
background: lightgreen;
height: 100%; /* setting this in IE causes the content to be 100% of the table rather than the table cell height */
}
この jsFiddle を Chrome で開くと、すべてが期待どおりです。ただし、IE10 では、IE9 もそう思われますが、高さがめちゃくちゃです (.content2 の高さは、セルではなくテーブルの 100% です)。
JavaScriptを使用してコンテンツの高さを手動で設定する以外に、これに対する適切な回避策はありますか? または、私が使用できるより良い CSS レイアウトはありますか? IE9 のため、新しいフレックスボックスを使用できません。