2017-04-09 5 views
1

は、私はボックスはブロック要素のように展開するが、最大幅を超えて拡大していない、まだ中央に配置したいこのhttps://codepen.io/techsin/pen/JWQgoMどのようにFlexboxを使用してアイテムを引き伸ばしてセンターしますか?

//html 
<div class="nav"> a \ b \ c</div> 
<div class="box"> no text</div> 

//css 
body { 
    display: flex; 
    flex-direction: column; 
    align-items: center; 
    align-content: stretch; 
} 

.box { 
    max-width: 800px; 
    padding: 30px; 
    background-color: gray; 
    flex-grow:1; 
} 


.nav { 
    padding: 30px; 
    background-color: purple; 
    text-align: center; 
    color: #fff; 
} 

を見てみましょう。

align-itemsをボディにストレッチすると、ボックスは展開されますが、マージンがautoに設定されている場合は左に揃えられ、アイテムは中央に配置されている場合、ボックスはできるだけ幅を埋めるようにします。

ボックスを800ピクセルに拡大するだけですが、ウィンドウサイズが変更されると、その幅も低下します。通常のブロック要素の幅がデフォルトでどのように動作するかと同じです。

フレックスボックスを使用する全理由は、箱の残りの高さもカバーすることです。

+1

その作業を与えます私は何の問題も見ることができません。 – aje

+1

余分なスペースを埋めるためにボックスを縦方向に拡大したい、横方向にも800px以下に拡大し、画面の幅が短くなるとサイズを縮小し、水平方向に中央に収まるようにします。今はそうではありません。それは垂直に拡大しますが、どちらか一方が800pxに伸びるか、どちらも同時に中央ではありません。 –

答えて

2

は、同じように

Updated codepen

スタックは、スニペットboxwidth: 100%;margin: 0 auto;box-sizing: border-box;ので、パディングがその幅に含まれます

* { 
 
    padding: 0; 
 
    margin: 0; 
 
} 
 

 
html, body { 
 
    height: 100%; 
 
} 
 

 
body { 
 
    display: flex; 
 
    flex-direction: column; 
 
} 
 

 
.box { 
 
    max-width: 800px; 
 
    width: 100%; 
 
    padding: 30px; 
 
    background-color: gray; 
 
    flex-grow:1; 
 
    margin: 0 auto; 
 
    box-sizing: border-box; 
 
} 
 

 
.nav { 
 
    padding: 30px; 
 
    background-color: purple; 
 
    text-align: center; 
 
    color: #fff; 
 
}
<div class="nav"> a \ b \ c</div> 
 
<div class="box"> no text</div>

+1

このように全体のトリックは 'width:100%'を追加することです、今日何かを学んだ –

+0

@MuhammadUmer基本的にはい – LGSon

関連する問題