2016-08-01 11 views
0

フルページのレイアウトにフレックスボックスを使用しようとしていますが、メインエリアにテキストが不十分な場合は、私が期待していたページの残りのスペース。フレックスボックスをフルページの高さに伸ばすことができません

私はalign-content: space-betweenのように振る舞いますが、私はしませんでした。私はここで間違って何をしていますか?任意の助け

body { 
 
    display: flex; 
 
    flex-flow: row wrap; 
 
    align-content: stretch; 
 
    /* no effect here */ 
 
    height: 100%; 
 
    width: 100%; 
 
    margin: 0px; 
 
} 
 
body > #header-area { 
 
    flex: 1 1 auto; 
 
    order: 1; 
 
    width: 100%; 
 
    height: 150px; 
 
} 
 
body > #menu-area { 
 
    flex: 0 0 180px; 
 
    order: 2; 
 
} 
 
body > #main-area { 
 
    flex: 1 1 auto; 
 
    order: 3; 
 
} 
 
body > #aside-area { 
 
    flex: 0 0 150px; 
 
    order: 4; 
 
} 
 
body > #footer-area { 
 
    flex: 1 1 auto; 
 
    order: 5; 
 
    width: 100%; 
 
    height: 100px; 
 
}
<div id="main-area" style="background-color: aqua"> 
 
    main area 
 
</div> 
 

 
<div id="menu-area" style="background-color: lavender"> 
 
    menu area 
 
</div> 
 

 
<div id="aside-area" style="background-color: lemonchiffon"> 
 
    sidebar area 
 
</div> 
 

 
<div id="header-area" style="background-color: lightsteelblue"> 
 
    header area 
 
</div> 
 

 
<div id="footer-area" style="background-color: lightskyblue"> 
 
    footer area 
 
</div>

ありがとう!

+1

ようにそれを行うだろう、あなたの中間のコンテンツをラップすることができた場合:列'および追加のラッピング要素を使用します。 –

答えて

0

あなたは、私はあなたが `フレックス方向へ` body`を設定せずにこれを行うことはできません。この

html {height:100%;} /* add this */ 
 
body { 
 
    display: flex; 
 
    flex-direction: column; 
 
    min-height: 100%; /* change this to min-height */ 
 
    width: 100%; 
 
    margin: 0; 
 
    padding:0; 
 
} 
 
body > #header-area { 
 
    /* flex: 1 1 auto; - not sure what this is for so I have removed it */ 
 
    order: 1; 
 
    width: 100%; 
 
    height: 150px; 
 
} 
 
#menu-area { 
 
    flex: 0 0 180px; 
 
    order:1; 
 
} 
 
#main-area { 
 
    flex: 1 1 auto; 
 
    order:2; 
 
} 
 
#aside-area { 
 
    flex: 0 0 150px; 
 
    order:3; 
 
} 
 
body > #footer-area { 
 
    /* flex: 1 1 auto; - not sure what this is for so I have removed it */ 
 
    order: 3; 
 
    width: 100%; 
 
    height: 100px; 
 
} 
 
#content { 
 
    flex-direction:row; 
 
    display:flex; 
 
    flex-grow:1; 
 
    order:2; 
 
}
<div id="content"> 
 
    <div id="main-area" style="background-color: aqua"> 
 
    main area 
 
    </div> 
 

 
    <div id="menu-area" style="background-color: lavender"> 
 
    menu area 
 
    </div> 
 

 
    <div id="aside-area" style="background-color: lemonchiffon"> 
 
    sidebar area 
 
    </div> 
 
</div> 
 

 
<div id="header-area" style="background-color: lightsteelblue"> 
 
    header area 
 
</div> 
 

 
<div id="footer-area" style="background-color: lightskyblue"> 
 
    footer area 
 
</div>

+0

私は、別のラッパー(#content)が必要でないことを望んでいたので、異なる画面サイズの表示順序を簡単に変更できるようになりました(flex-flow:row wrap;コンテナとフレックスオーダー: )。しかし、追加のラッパーはこれを不可能にしているようです。 – Paul

+0

@Paulそれは可能かもしれない、私はフレックスを学び始めているだけで、それは私がそれを行うことができるよりもはるかに多くを見てきました。私はあなたが頼んでいるようなものを見たが、ラッパーを使っているかどうかを覚えていないことが何年も前に覚えているようだ。ちょっとした検索の後、私が見た例のほとんどは、中間のコンテンツのラッパーを使用します。 – Pete

+1

はい、私ももちろん探しています。しかし、それが行われたすべての例は、やや単純であり、余分なラッパーを持たず、フレックスフロー(行の折り返し)を使用しません。私が解決策を見つけたら、ここに投稿します... – Paul

関連する問題