2016-11-16 8 views
4

私は.parent divを持っており、その中にがありません。の数字が.child divsです。私は子divsが垂直グリッドにある必要があり、それらのすべてが等しい高さである必要があります。残念ながら、私はこれにjavascriptを使用することはできません。divを垂直グリッドで同じ高さにするCSSのみのソリューションはありますか?

私はdisplay: inline-blockfloat: leftの異なる組み合わせを試しましたが、子供の高さを同じにすることはできません。

私はdisplay: table-cellを使って同じ高さを達成することができますが、次に合計幅がコンテナの幅を超えた場合、子供が複数の行に分割されないという別の問題が発生します。

純粋なCSSでこれを行う方法はありますか?私はIE10 +をサポートする必要があるだけです(フレックスボックス?)

+3

'flexbox'は(明示的な高さを設定せずに)助けることができますが、それぞれの行は問題ではない異なる可能性があり、各行... – kukkuz

+0

上の高さと高さに一致する必要があります。それは各列で同じ高さである限り。 –

+0

OK、下に作成したデモをチェックしてください - ウィンドウの幅の変化をラップし、各行の高さは同じです... – kukkuz

答えて

3

あなたが使用することができます包むflexbox - 高さを自動調整ウィンドウのサイズを変更すると、子のdivをラップしたときに(原因デフォルトでalign-items:stretchプロパティに)どのように参照してください。

* { 
 
    box-sizing: border-box; 
 
} 
 
body { 
 
    margin: 0; 
 
} 
 
.wrapper { 
 
    display: flex; 
 
    flex-flow: row wrap; 
 
} 
 
.wrapper > div { 
 
    border: 1px solid red; 
 
}
<div class="wrapper"> 
 
    <div> 
 
    some text here some text here 
 
    </div> 
 

 
    <div> 
 
    some text here 
 
    <br/>more text here 
 
    </div> 
 

 
    <div> 
 
    some text here 
 
    <br/>more text here and some more and some more 
 
    </div> 
 

 
    <div> 
 
    some text here 
 
    <br/>more text here 
 
    <br/>more text here 
 
    </div> 
 

 
</div>

0

ビューポートユニットを試してみることができます。このような

何かがうまくいくかもしれない:

.child { 
    height: 1vw; 
} 

これは、子要素は、ビューポートの幅の1/100持つようになります。

To read more about viewport units

Viewport units support

+0

これは、コンテンツがその高さを超えた場合、スクロールバーを持つようにします。 –

1

はいあなたはフレキシボックスを使用することができます。

.parent{ 
    display: flex; 
} 
.child{ 
    flex:1; 
} 
+0

[IE10の部分サポート](http://caniuse.com/#search=flex)はどうですか?この設定に問題が生じるのでしょうか? –

+0

また、ウィンドウのサイズを変更すると、複数の行に子を分割するようには見えません。 –

関連する問題