よりフレキシブルなdisplay:flexbox;
親要素に使用できるプロパティ(display:flex;と同じ場所に設定) | ||
---|---|---|
flex-flow | flex-direction と flex-wrap をまとめて書きたいときに使用する。 | |
flex-direction | 各エレメントの配置方法、順番の指定。 | |
row | 横並び/順番通り | |
row-reverse | 横並び/順番を逆に | |
column | 縦並び/順番通り | |
column-reverse | 縦並び/順番を逆に | |
flex-wrap | 端まで来たときに折り返すか否か、また折り返し方法の指定 | |
nowrap | 端で折り返さない | |
wrap | 端で折り返す | |
wrap-reverse | 逆さまに折り返す | |
justify-content | 要素をどこにどうやって揃えるかを指定。 | |
flex-start | 左(または上)側を起点として配置 | |
flex-end | 右(または下)側を起点として配置 | |
center | 中央揃え | |
space-between | 均等幅に配置。両端は詰められる。 | |
space-around | 均等幅に配置。両端にも分け隔てなく感覚をおく。 | |
align-content | 複数の要素を整列させる。 | |
flex-start | 左(または上)側を起点として配置 | |
flex-end | 右(または下)側を起点として配置 | |
center | 中央揃え | |
space-between | 均等幅に配置。両端は詰められる。 | |
space-around | 均等幅に配置。両端にも分け隔てなく感覚をおく。 | |
align-items | 複数の要素を整列させる。 | |
flex-start | 左(または上)側を起点として配置 | |
flex-end | 右(または下)側を起点として配置 | |
center | 中央揃え | |
baseline | ベースラインで揃える | |
stretch | 上下いっぱいにストレッチする。 |
子要素に使用できるプロパティ(display:flex;の子要素に設定) | ||
---|---|---|
order | 数字 | 特定の子要素の並び順を設定 |
flex-grow | 数字 | 特定の子要素を引き延ばす |
flex-shrink | 数字 | 特定の子要素を縮める |
flex-basis | auto | 初期値 |
数字(width) | 幅を指定 | |
flex | flex-grow/flex-shrink/flex-basisをまとめて書きたい時 | |
none | 指定なし | |
auto | 初期値 | |
flex-grow flex-shrink flex-basis | それぞれの値を指定 | |
align-self | auto | 初期値 |
flex-start | 左(または上)側を起点として配置 | |
flex-end | 右(または下)側を起点として配置 | |
center | 中央揃え | |
baseline | ベースラインで揃える | |
strech | 上下いっぱいにストレッチする。 |
わかりやすいデモがあったので、ここを参考にメモしていきます。
CSS Flexbox Please!
基本、以下のソースを基準に、スタイルで見え方を操作しようと思います。
---------------------------------------------- HTML ---------------------------------------------- <ul> <li id="colA">A</li> <li id="colB">B</li> <li id="colC">C</li> <li id="colD">D</li> </ul>
flex-directionとflex-wrapを使ってみる
<ul id="fb-row-nw"> <!-- 以下同じようにulにIDを付与 -->
<li class="colA">A</li>
<li class="colB">B</li>
<li class="colC">C</li>
<li class="colD">D</li>
</ul>
#fb-row-nw{
background:#e4e4e4;
height:150px;
display: flex;
flex-direction:row;
frex-wrap:nowrap;
}
#fb-row-re-nw{
background:#e4e4e4;
height:150px;
display: flex;
flex-direction:row-reverse;
frex-wrap:nowrap;
}
#fb-col-nw{
background:#e4e4e4;
height:150px;
display: flex;
flex-direction:column;
frex-wrap:nowrap;
}
#fb-col-re-nw{
background:#e4e4e4;
height:150px;
display: flex;
flex-direction:column-reverse;
frex-wrap:nowrap;
}
#fb-row-w{
background:#e4e4e4;
height:150px;
display: flex;
flex-direction:row;
frex-wrap:nowrap;
}
#fb-row-re-w{
background:#e4e4e4;
height:150px;
display: flex;
flex-direction:row-reverse;
frex-wrap:nowrap;
}
#fb-col-w{
background:#e4e4e4;
height:150px;
display: flex;
flex-direction:column;
frex-wrap:nowrap;
}
#fb-col-re-w{
background:#e4e4e4;
height:150px;
display: flex;
flex-direction:column-reverse;
frex-wrap:nowrap;
}
#fb-row-wr{
background:#e4e4e4;
height:150px;
display: flex;
flex-direction:row;
frex-wrap:wrap-reverse;
}
#fb-row-re-wr {
background:#e4e4e4;
height:150px;
display: flex;
flex-direction:row-reverse;
frex-wrap:wrap-reverse;
}
#fb-col-wr {
background:#e4e4e4;
height:150px;
display: flex;
flex-direction:column;
frex-wrap:wrap-reverse;
}
#fb-col-re-wr {
background:#e4e4e4;
height:150px;
display: flex;
flex-direction:column-reverse;
frex-wrap:wrap-reverse;
}
justify-contentを使ってみる
#fb-just-fs{
background:#e4e4e4;
height:150px;
display: flex;
justify-content:flex-start;
}
#fb-just-fe{
background:#e4e4e4;
height:150px;
display: flex;
justify-content:flex-end;
}
#fb-just-ct{
background:#e4e4e4;
height:150px;
display: flex;
justify-content:center;
}
#fb-just-sb{
background:#e4e4e4;
height:150px;
display: flex;
justify-content:space-between;
}
#fb-just-sa{
background:#e4e4e4;
height:150px;
display: flex;
justify-content:space-around;
}
align-content を使ってみる (flex-wrap:nowrap;は無効)
#fb-al-con-fs{
background:#e4e4e4;
height:150px;
display: flex;
flex-direction:row;
flex-wrap:wrap;
align-content:flex-start;
}
#fb-al-con-fe{
background:#e4e4e4;
width:150px;
height:150px;
display: flex;
flex-direction:row;
flex-wrap:wrap;
align-content:flex-end;
}
#fb-al-con-ct{
background:#e4e4e4;
height:150px;
display: flex;
flex-direction:row;
flex-wrap:wrap;
align-content:center;
}
#fb-al-con-sb{
background:#e4e4e4;
height:150px;
display: flex;
flex-direction:row;
flex-wrap:wrap;
align-content:space-between;
}
#fb-al-con-sa{
background:#e4e4e4;
height:150px;
display: flex;
flex-direction:row;
flex-wrap:wrap;
align-content:space-around;
}
#fb-al-con-st{
background:#e4e4e4;
height:150px;
display: flex;
flex-direction:row;
flex-wrap:wrap;
align-content:stretch;
}
align-items を使ってみる
#fb-al-itm-fs{
background:#e4e4e4;
height:150px;
display: flex;
align-items:flex-start;
}
#fb-al-itm-fe{
background:#e4e4e4;
height:150px;
display: flex;
align-items:flex-end;
}
#fb-al-itm-ct{
background:#e4e4e4;
height:150px;
display: flex;
align-items:center;
}
#fb-al-itm-bl{
background:#e4e4e4;
height:150px;
display: flex;
align-items:baseline;
}
#fb-al-itm-st{
background:#e4e4e4;
height:150px;
display: flex;
align-items:stretch;
}
order 子要素の並び順を変更
HTML上ではABCDの順で書かれていますが、orderで順番を変更しています。
---------------------------------------------- HTML ---------------------------------------------- <ul id="fb-order"> <li class="colA">A</li> <li class="colB">B</li> <li class="colC">C</li> <li class="colD">D</li> </ul> ---------------------------------------------- CSS ---------------------------------------------- #fb-order{ display:flex; } #fb-order .colA{order:3;} #fb-order .colB{order:2;} #fb-order .colC{order:1;} #fb-order .colD{order:4;}
flex-grow 特定の子要素を引き延ばす
0.1〜1の間の数値を指定します
----------------------------------------------
HTML
----------------------------------------------
<ul id="fb-flex-grow">
<li class="colA">A</li>
<li class="colB">B</li>
<li class="colC">C</li>
<li class="colD">D</li>
</ul>
----------------------------------------------
CSS
----------------------------------------------
#fb-flex-grow{
display:flex;
}
#fb-flex-grow .colB{flex-grow:.5;}
flex-shrink 特定の子要素を縮小する
整数値を指定します
----------------------------------------------
HTML
----------------------------------------------
<ul id="fb-flex-shrink">
<li class="colA">A</li>
<li class="colB">B</li>
<li class="colC">C</li>
<li class="colD">D</li>
</ul>
----------------------------------------------
CSS
----------------------------------------------
#fb-flex-shrink{
display:flex;
}
#fb-flex-shrink li{
width:30%;
}
#fb-flex-shrink li.colB{flex-shrink:5;}
flex-basis 特定の子要素の幅を指定する
----------------------------------------------
HTML
----------------------------------------------
<ul id="fb-flex-basis">
<li class="colA">A</li>
<li class="colB">B</li>
<li class="colC">C</li>
<li class="colD">D</li>
</ul>
----------------------------------------------
CSS
----------------------------------------------
#fb-flex-basis{
display:flex;
}
#fb-flex-basis .colA{flex-basis:50px;}
flex 値をひとつにまとめる
プロパティを省略したいときに使用します。flex-grow/flex-shrink/flex-basisをまとめて書きたい時ということだけれど、flex-growとflex-shrinkをまとめて書きたい時ってどんな時だろ?
----------------------------------------------
HTML
----------------------------------------------
<ul id="fb-flex">
<li class="colA">A</li>
<li class="colB">B</li>
<li class="colC">C</li>
<li class="colD">D</li>
</ul>
----------------------------------------------
CSS
----------------------------------------------
#fb-flex{
display:flex;
}
#fb-flex .colA{ flex: .3 0 30%;}
align-self 特定の子要素の配置を指定
----------------------------------------------
HTML
----------------------------------------------
<ul id="fb-align-self">
<li class="colA">A</li>
<li class="colB">B</li>
<li class="colC">C</li>
<li class="colD">D</li>
</ul>
----------------------------------------------
CSS
----------------------------------------------
#fb-align-self{
height:60px;
display:flex;
}
#fb-align-self .colA{ align-self:center;}