2016-08-10 13 views
2

2つ、3つまたはそれ以上のdivが水平に配置されたい場合は、各幅がすべての利用可能なスペースを埋めるようにします。たとえば、2つのdivの場合は、それぞれスペースの半分を占め、3つのdivの場合はスペースの1/3を占めます。複数のdivを同じ幅で水平に配置するにはどうすればよいですか?

ディスプレイのインラインブロックを使ってみましたが、divを並べて並べることはできますが、どのようにして親コンテナの幅を埋めることができますか?

EDIT:好ましくは、ディスプレイなしのフレックス方法(完全IE11との互換性のある場合、私はよく分からない)

.container{ 
 
    border: solid 1px green; 
 
    height: 50px; 
 
    box-sizing: border-box; 
 

 

 
} 
 
.button{ 
 
    display:inline-block; 
 
    border: solid 1px black; 
 
    height: 20px; 
 
}
<div class="container"> 
 
<div class="button "> 
 
div1 
 
</div> 
 
<div class="button "> 
 
div2 
 
</div> 
 
<div class="button "> 
 
div3 
 
</div> 
 
</div>

+0

ブートストラップ知っていますか? – JazZ

+2

http://stackoverflow.com/questions/35325371/how-can-i-let-a-div-fill-100-width-if-no-other-elements-are-beside-it/35325430#35325430 –

+0

FYI最近、SOには独自のスニペット機構があります。編集ウィンドウの上にあるアイコンの上に '<>'が付いた文書のように表示されます。 – zwol

答えて

3

display: tableをコンテナに、display: table-cellをボタンに使用できます。

.container{ 
 
    border: solid 1px green; 
 
    height: 50px; 
 
    box-sizing: border-box; 
 
display: table; 
 
width: 100%; 
 

 
} 
 
.button{ 
 
    display: table-cell; 
 
    border: solid 1px black; 
 
    height: 20px; 
 
}
<div class="container"> 
 
<div class="button "> 
 
div1 
 
</div> 
 
<div class="button "> 
 
div2 
 
</div> 
 
<div class="button "> 
 
div3 
 
</div> 
 
</div>

+0

これは最高の非フレックスボックスソリューションです。 –

4

これはflexboxレイアウトと簡単です:

.container{ 
 
    border: solid 1px green; 
 
    height: 50px; 
 
    box-sizing: border-box; 
 
    display: flex; 
 
} 
 
.button{ 
 
    display:inline-block; 
 
    border: solid 1px black; 
 
    height: 20px; 
 
    flex: 1; 
 
}
<div class="container"> 
 
<div class="button "> 
 
div1 
 
</div> 
 
<div class="button "> 
 
div2 
 
</div> 
 
<div class="button "> 
 
div3 
 
</div> 
 
</div>

私がしたのは、とbuttonにそれぞれdisplay:flexflex:1のプロパティを追加したことでした。

Flexbox is very widely supported nowadaysですが、IE(バージョン11まで)や古いAndroidを気にしている場合は、避けたいかもしれません。残念なことに、フレックスボックスなし、あなたがしたいことははるかに困難です。私は誰かにフレックスボックス以外の回答を書くようにします。

+0

IE11がオンラインで多くのリンクを発見して以来、私はIE11がバーフすることに懸念しました。 – sjs

+0

@sjs [ここに記載されている](https://github.com/philipwalton/flexbugs)のすべてのバグを回避できれば、フレックスボックスはIE11でうまく見えます。 –

+0

* flex書式設定コンテキスト*では、フレックスの子の 'display'プロパティは無視され/オーバーライドされることに注意してください。あなたのコードにあるように、 'display:inline-block'を使うことには意味がありません。 –

関連する問題