概要
floatプロパティーは、ブロック要素を横方向に並べることができるが、要素を順に並べていくので、望んでいる配置対して意図しない結果となることがある。
flex要素は、コンテナーの中でそれらが整然と配置されるよう、より簡明な指定を可能とする。
特にブロック要素を水平に均等配置したり、nav、article、aside要素などを一定の比率で横に並べたりするときに重宝する。
書式
要素が配置されるflexはコンテナ側と、実際に配置する要素の双方で指定する。
- 親要素にdisplay: flex;を記述
- 子要素にflex: n;を記述
たとえば.parentクラスの要素の中に.childクラスの要素を水平配置する場合
1 2 3 4 5 6 7 |
.parent { display: flex; } .child { flex: 1; } |
.childクラスのブロック要素を複数htmlに書くと、それらが.parentクラスの要素内に均等に水平配置される。
また2つの子要素.child1と.child2をm対nの幅の比率で水平配置したい場合は以下のように記述する。
1 2 3 4 5 6 7 8 9 10 11 |
.parent { display: flex; } .child1 { flex: m; } .child2 { flex: n; } |
値
コンテナ内に配置される要素の幅の比率
実行例
均等配置
以下の例は、3つのdiv要素を親要素の中で水平に均等配置する。
HTML
1 2 3 4 5 |
<div class="parent"> <div class="child">child1</div> <div class="child">child2</div> <div class="child">child3</div> </div> |
CSS
1 2 3 4 5 6 7 8 9 10 11 |
.parent { width: 400px; height: 100px; border: solid 4px #000; display: flex; } .child { border: solid 4px #0ff; flex: 1; } |
実行結果
比率指定
次の例は、複数の要素に値を指定して、その値の比率で水平配置する例。
HTML
1 2 3 4 |
<div class="parent"> <div class="child1">child1</div> <div class="child2">child2</div> <div class="child3">child3</div> |
CSS
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
.parent { width: 400px; height: 100px; border: solid 4px #000; display: flex; } .child1 { border: solid 4px #f00; flex: 1; } .child2 { border: solid 4px #0f0; flex: 3; } .child3 { border: solid 4px #00f; flex: 2; } |
結果