はい、あなたはここで-とフレキシボックスを使用することができ、それは仕事がほとんどの部分で片付ける必要がある以外の目的のレイアウトを持っているフィドルです。それは一種のハッキーです。あなたはCSSの列ルールを使用して放棄しています。バラツキが多少あるので、それ以上行/列を追加すると、値を変更する必要があります。行ごとの列数を保持するには、ラッパーの固定高さまたは高さの高さを設定する必要があります。ここから、display: flex
ルールを持つフレックスコンテナとしてラッパーコンテナを確立し、flex-direction: column
とflex-wrap: wrap
または略称flex-flow: column wrap
のいずれかを使用して複数の列を設定します。
各列にx個の項目があることを確認するには、flex-basis
ルールを使用して、入力する列の割合を設定する必要があります。したがって、3つの項目を含む列にはflex-basis: 33.33%
があります。 3つのアイテムからなる行が2つ、2つのアイテムからなる行が2つ必要であることを示したので、nth-child
またはnth-of-type
セレクタを使用して、10番目のエレメントから新しいフレックスベース50%
を設定する必要があります。そして、もちろん、あなたがページ上で物事要素を取りたい幅のパーセンテージを設定する必要があります(4行= 25%)。すべての要素が同じサイズのあることを確認するために、あなたはフレキシボックス内のテキストを中心にしても問題のまま、しかし
を使用する必要があるとあなたがflex
またはinline-flex
へdisplay
を設定することにより、フレックスコンテナとして物事を確立する必要がありますおよびjustify-content
属性をcenter
に設定して、をcolumn
とします。
justify-content: center;
flex-direction: column;
text-align: center
http://jsfiddle.net/hxcnoxx9/10/
このCSSはあなたの問題を解決する必要があります。
.wrap {
height: 180px;
background: linear-gradient(to right, tomato 0%, tomato 25%, slategrey 25%, slategrey 50%, tomato 50%, tomato 75%, slategrey 75%);
display: flex;
flex-direction: column;
flex-wrap: wrap;
}
.thing {
background: rgba(255, 255, 255, .2);
color: #fff;
width: 25%;
flex-basis: 33.33%;
box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .5);
display: inline-flex;
justify-content: center;
flex-direction: column;
text-align: center;
}
.thing:nth-child(1n+10) {
flex-basis: 50%;
}
「列が空でない」。あなたが空のスペースを埋めるために必要なものと、それらの間に '.thing'幅またはマージンを付けます。 –
@ Narek-T最後の列(4番目)は、少なくとも私のために空に見えます。私はMacでChrome 47を使用しています。 – kthornbloom
私のためにも、何があるべきですか?私の英語のために申し訳ありません)あなたは9項目あり、4列に分割したいと思います。ブラウザは何をする必要がありますか?あなたが最後の列を空にすることはありません8項目を配置する場合。 –