2017-06-06 8 views
1

私は中にコンテンツを持つdivを持っています。2要素の残りの高さを入力してください

残りのスペースに上と下のdivを埋めたいとします。

this

<div class="container"> 
    <div class="top"> 

    </div> 
    <div class="middle"> 
     Content 
    </div> 
    <div class="bottom"> 

    </div> 
</div> 

ような何か私がセットにトップとボトムコンテナの分の高さをご希望の場合は可能。

答えて

1

に入ります - ビューの高さなど に追加するのを忘れその

html, body { 
 
    margin: 0; 
 
} 
 
body { 
 
    display: flex;   /* IE fix */ 
 
} 
 
.container { 
 
    display: flex; 
 
    flex-direction: column; 
 
    min-height: 100vh; 
 
    width: 100%;    /* IE fix */ 
 
} 
 
.top, .bottom { 
 
    flex: 1;     /* fill remaining space */ 
 
    background: lightblue; 
 
} 
 
.middle { 
 
    background: lightgreen; 
 
}
<div class="container"> 
 
    <div class="top"> 
 

 
    </div> 
 
    <div class="middle"> 
 
     Content 
 
    </div> 
 
    <div class="bottom"> 
 

 
    </div> 
 
</div>


そして、あなたが必要な場合は、あなたもここでtop/bottom要素

html, body { 
 
    margin: 0; 
 
} 
 
body { 
 
    display: flex;   /* IE fix */ 
 
} 
 
.container { 
 
    display: flex; 
 
    flex-direction: column; 
 
    min-height: 100vh; 
 
    width: 100%;    /* IE fix */ 
 
} 
 
.top, .bottom { 
 
    flex: 1;     /* fill remaining space */ 
 
    background: lightblue; 
 
    min-height: 200px;  /* set a min-height */ 
 
} 
 
.middle { 
 
    background: lightgreen; 
 
}
<div class="container"> 
 
    <div class="top"> 
 

 
    </div> 
 
    <div class="middle"> 
 
     Content 
 
    </div> 
 
    <div class="bottom"> 
 

 
    </div> 
 
</div>

+0

偉大な応答、これはまさに私が感謝する必要があるように見えます! – KevinKelbie

+0

@WizardCoder私はあなたがそれが悪いとは言わなかったと知っているが、もう一度見て、IE10は、上記のコードでは 'display:-ms-flexbox;'、 '-ms-flex-direction :column'と '-ms-flex:1;' – LGSon

0

.top{ 
 
min-height:100px; 
 
} 
 
.bottom{ 
 
min-height:100px; 
 
}

か、別のmeseurmentを使用することができます - VHのように - それはあなたが行うことができますフレキシボックスを使用してCSSファイル

+0

しかし、これは、残りのスペースを埋めることはありません。 – KevinKelbie

+0

jqueryを使用しますか?あなたは動的な計算を使用する必要がある場合、私はあなたに役立つ短いjquery関数を表示することができます –

+0

確かに、それが最も簡単な方法です。助けてくれてありがとう! :) – KevinKelbie

0

min-heightを追加することができ、すべてのあなたの純粋主義者のためのテーブルソリューションです。

html, body { 
 
    margin: 0; 
 
    height:100%; 
 
} 
 
.container { 
 
    display: table; 
 
    height: 100%; 
 
    width: 100%; 
 
} 
 
.container > div { 
 
    display: table-row; 
 
} 
 
.table-cell { 
 
    display: table-cell; 
 
} 
 
.top, .bottom { 
 
    background: #ADD8E6; 
 
} 
 
.middle { 
 
    background: #90EE90; 
 
    height:1px; 
 
}
<div class="container"> 
 
    <div class="top"> 
 
    <div class="table-cell"> 
 

 
    </div> 
 
    </div> 
 
    <div class="middle"> 
 
    <div class="table-cell"> 
 
     Content 
 
    </div> 
 
    </div> 
 
    <div class="bottom"> 
 
    <div class="table-cell"> 
 

 
    </div> 
 
    </div> 
 
</div>

+0

もう一つのすばらしいソリューションありがとう!これはフレックスソリューションよりもフレンドリーですか? – KevinKelbie

+0

フレックスボックスを使用しない唯一の理由は、IE9をサポートしたい場合です。複雑な構造の大きなサイトでも、flexboxはページの読み込み時間をわずかに増加させる可能性があります。私は私が望むレイアウトを達成するための他の方法がない場合、私は個人的にフレックスボックスしか使用しません。それはすべて言われている、この場合私はフレックスを使うことに何の問題も見られない。 – WizardCoder

関連する問題