2017-10-09 18 views
0

この単純化されたレイアウトとして育つことを確認してください:フレックスコンテナの幅がその子

<div class="root"> 
    <div class="container"> 
    <div class="cell"> 
     <input type="text" class="contact"></input> 
    </div> 
    </div> 
</div> 

そして、この簡略化されているCSS:

.root { 
    background-color: red; 
    overflow: auto; 
    width: 300px; 

} 

.container { 
    background-color: green; 
    display: flex; 
    height: 50px; 
} 

.cell { 
    background-color: black; 
    height: 30px; 
} 

.contact { 
    width: 400px; 
} 

これはjsFiddleです。

container幅は、それがその子によって必要とされるのと同じではなく、むしろrootdivによって限定されるようであることを私にやや予想外です。このjsFiddleで、赤い領域(ルートdiv)が緑色で塗りつぶされていないことがわかりますcontainerdiv

なぜ、flexコンテナの幅がその子として成長せず、その修正方法を説明できますか?

+1

これは*なぜ?* ... https://stackoverflow.com/q/45497031/3597276 –

+1

@Michael_B私はそのリンクを探していた:)説明するかもしれません...重複している可能性があります私の答えにそれを追加upvote – LGSon

+0

あなたが受け入れるために、私は追加または調整することができます私の答えに何かが欠けていますか? – LGSon

答えて

2

ブロック要素は親の幅まで拡大し、インラインはその内容に伴って増加します。

素晴らしいとより詳細な説明はここで見つけることができます:


inline-flexに変更し、あなたが期待する結果を得ることができます。

.root { 
 
    background-color: red; 
 
    overflow: auto; 
 
    width: 300px; 
 
    
 
} 
 

 
.container { 
 
    background-color: green; 
 
    display: inline-flex;    /* changed */ 
 
    height: 50px; 
 
} 
 

 
.cell { 
 
    background-color: black; 
 
    height: 30px; 
 
} 
 

 
.contact { 
 
    width: 400px; 
 
}
<div class="root"> 
 
    <div class="container"> 
 
    <div class="cell"> 
 
     <input type="text" class="contact"> 
 
    </div> 
 
    </div> 
 
</div>

関連する問題