2

これは IE9/10 固有の問題だと思います。次のように柔軟な行レイアウトを作成しようとしています:

|----------------------------------|
|    FIXED HEIGHT                  |
|----------------------------------|
|    FIXED HEIGHT, SOMETIMES HIDDEN|
|----------------------------------|
|                                  |
|    FLEXIBLE HEIGHT               |
|                                  |
|----------------------------------|
|    FIXED HEIGHT                  |
|----------------------------------|

また、これの外側のコンテナーには、ブラウザーのビュー ポートに合わせて柔軟な高さと幅を持たせたいと考えています。

おそらく単純に、私は Chrome、Firefox、Safari、および IE9/10 しかサポートしていないのでdisplay: tabledisplay: 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 のため、新しいフレックスボックスを使用できません。

4

1 に答える 1