単純な横並び

row というクラスの div の中に col というクラスの div を並べます。
クラスの命名には行を表す row と、列を表す col がよく使われています。
<div class="row"> <div class="col">col</div> <div class="col">col</div> <div class="col">col</div></div>CSSは row に display:flex を指定します。
col の width は 100% にします。
.row { display: flex; }.col { width: 100%; }これだけで横サイズぴったりに納まります。
今回は div は3つだけですが、4つでも5つでもこのスタイルで大丈夫です。Flexすごい!
省略していますが、サポートブラウザによってはプレフィクスを付与してください。
マージン・溝を設定する
divとdivの間を開けたいといったことはよくありますね。
マージンを設定してみましょう。

間隔を空けたい場合は margin-left を設定します。
col に空けたい数値を入れ、row には同じ値をマイナス値で入れます。
.row { display: flex; margin-left: -20px;}.col { width: 100%; margin-left: 20px;}レスポンシブに対応する
やっぱり最近はレスポンシブな作りにしなくてはいけませんね。
メディアクエリで狭い画面のときは1カラムにしてみましょう。
@media screen and (max-width: 540px) { .row { flex-wrap: wrap; }}flex-wrap:wrap を指定することで col に指定した width:100% が生き横並びしなくなります。
レスポンシブのときカラム数を制御する
小さい画面の時も2列や3列にしたい時があります。
基本的には col のサイズを指定することになります。
@media screen and (max-width: 540px) { .row { flex-wrap: wrap; } .col-sm-50 { width: 50%; } .col-sm-40 { width: 40%; } .col-sm-33 { width: 33.33333333%; } .col-sm-20 { width: 20%; } .col-sm-10 { width: 10%; }}<!-- モバイルでは2分割 --><div class="row"> <div class="col col-sm-50">col</div> <div class="col col-sm-50">col</div> <div class="col col-sm-50">col</div> <div class="col col-sm-50">col</div></div><!-- モバイルでは3分割 --><div class="row"> <div class="col col-sm-33">col</div> <div class="col col-sm-33">col</div> <div class="col col-sm-33">col</div> <div class="col col-sm-33">col</div> <div class="col col-sm-33">col</div> <div class="col col-sm-33">col</div></div>rowから分割数を指定
均等の分割なら親の row で分割数指定した方がスマートに書けそうですね。
あと calc を使えば計算もしてくれます。
@media screen and (max-width: 540px) { .row-sm-blocks-2 > .col { width: calc( 100% / 2); } .row-sm-blocks-3 > .col { width: calc( 100% / 3); } .row-sm-blocks-4 > .col { width: calc( 100% / 4); }}※ calc( 100% / 3) などおそらく割り切れないものはIE11で正常に計算されないようで、コンテナのwidthによっては崩れます。
<!-- モバイルでは2分割 --><div class="row row-sm-blocks-2"> <div class="col">col</div> <div class="col">col</div> <div class="col">col</div> <div class="col">col</div></div>レスポンシブのときマージン・溝を設定したい
最後にレスポンシブのときもマージンを設定しています。
これは col に calc でマイナス値を追加するだけです。
.row { display: flex; margin-left: -20px;}.col { width: 100%; margin-left: 20px;}@media screen and (max-width: 540px) { .row { flex-wrap: wrap; }
.col-sm-50 { width: calc( 50% - 20px ); } .col-sm-40 { width: calc( 40% - 20px ); } .col-sm-33 { width: calc( 33.33333333% - 20px ); } .col-sm-20 { width: calc( 20% - 20px ); } .col-sm-10 { width: calc( 10% - 20px ); }
.row-sm-blocks-2 > .col { width: calc( (100% / 2) - 20px ); } .row-sm-blocks-3 > .col { width: calc( (100% / 3) - 20px ); } .row-sm-blocks-4 > .col { width: calc( (100% / 4) - 20px ); }}もっと上手いやり方があるかもしれませんが、以上です。

