CSS3 Flexbox
柔軟なボックス、またはflexbox 、CSS3で新しいレイアウトモードです。
使用flexboxページのレイアウトが異なる画面サイズと異なる表示デバイスに対応しなければならないときに要素が予想どおりに動作することを保証します。
多くのアプリケーションでは、柔軟なボックスモデルは、浮動小数点数を使用し、またその内容の余白とフレックスコンテナのマージンの崩壊を行わないことでブロックモデルを超える改善を提供します。
ブラウザのサポート
表中の数字は完全に機能をサポートする最初のブラウザのバージョンを指定します。
数字は続い-webkit-または-moz-接頭辞で働いていた最初のバージョンを指定します。
プロパティ | |||||
---|---|---|---|---|---|
Basic support (single-line flexbox) |
29.0 21.0 -webkit- |
11.0 | 22.0 18.0 -moz- |
6.1 -webkit- | 12.1 -webkit- |
Multi-line flexbox | 29.0 21.0 -webkit- |
11.0 | 28.0 | 6.1 -webkit- | 17.0 15.0 -webkit- 12.1 |
CSS3 Flexbox概念
Flexboxフレックスコンテナやフレックス項目から構成されています。
フレックスコンテナを設定することによって宣言されdisplay
のいずれかに要素のプロパティをflex
(ブロックとしてレンダリング)またはinline-flex
(インラインとしてレンダリング)。
フレックスコンテナの内部に一つ以上のフレックスの項目があります。
注意:フレックスコンテナの外側とフレックス項目内部のすべてがいつものようにレンダリングされます。 フレキシボックスは、フレックスコンテナ内でどのように配置されるか、フレックス項目を定義します。
Flexの項目がフレックスラインに沿ってフレックスコンテナの内側に配置されています。 デフォルトでは、フレックスコンテナごとに1つだけのフレックスラインがあります。
次の例では、3つのフレックス項目を示しています。 これらはデフォルトで配置されている:水平フレックスラインに沿って、左から右へ:
例
<!DOCTYPE html>
<html>
<head>
<style>
.flex-container {
display: -webkit-flex;
display: flex;
width:
400px;
height: 250px;
background-color:
lightgrey;
}
.flex-item
{
background-color: cornflowerblue;
width: 100px;
height: 100px;
margin: 10px;
}
</style>
</head>
<body>
<div
class="flex-container">
<div class="flex-item">flex item 1</div>
<div class="flex-item">flex item 2</div>
<div
class="flex-item">flex item 3</div>
</div>
</body>
</html>
フレックス線の方向を変更することも可能です。
我々が設定した場合direction
にプロパティをrtl
(右から左)、テキストは右から左に描画され、また、フレックスラインは、ページレイアウトを変更します方向を変更します。
例
body {
direction: rtl;
}
.flex-container {
display: -webkit-flex;
display: flex;
width:
400px;
height: 250px;
background-color:
lightgrey;
}
.flex-item
{
background-color: cornflowerblue;
width: 100px;
height: 100px;
margin: 10px;
}
Flexの方向
flex-direction
プロパティは、フレックスコンテナ内柔軟なアイテムの方向を指定します。 デフォルト値のflex-direction
あるrow
(左から右、上から下)。
次のように他の値は次のとおりです。
-
row-reverse
-書き込みモード(方向)が左から右にされている場合は、フレックスアイテムは右から左にレイアウトされます -
column
-ライティングシステムが水平になっている場合は、フレックスアイテムが垂直方向にレイアウトされます -
column-reverse
-列と同じですが、逆に
次の例では、使用した結果を示しrow-reverse
値:
例
.flex-container {
display: -webkit-flex;
display: flex;
-webkit-flex-direction: row-reverse;
flex-direction:
row-reverse;
width:
400px;
height: 250px;
background-color:
lightgrey;
}
次の例では、使用した結果を示しcolumn
値:
例
.flex-container {
display: -webkit-flex;
display: flex;
-webkit-flex-direction: column;
flex-direction:
column;
width:
400px;
height: 250px;
background-color:
lightgrey;
}
次の例では、使用した結果を示してcolumn-reverse
値:
例
.flex-container {
display: -webkit-flex;
display: flex;
-webkit-flex-direction: column-reverse;
flex-direction:
column-reverse;
width:
400px;
height: 250px;
background-color:
lightgrey;
}
正当化するコンテンツプロパティ
justify-content
アイテムがメイン軸上のすべての利用可能なスペースを使用しないときに、プロパティは、水平方向にフレキシブルコンテナのアイテムを揃えます。
設定可能な値は次のとおり:
-
flex-start
-デフォルト値。 アイテムは、コンテナの先頭に配置されています -
flex-end
-アイテムは、容器の端部に配置されています -
center
-アイテムは、容器の中央に位置しています -
space-between
-アイテムがライン間のスペースで配置されています -
space-around
-アイテムは間、および行の後、前にスペースが配置されています
次の例では、使用した結果を示しflex-end
値:
例
.flex-container {
display: -webkit-flex;
display: flex;
-webkit-justify-content: flex-end;
justify-content:
flex-end;
width:
400px;
height: 250px;
background-color:
lightgrey;
}
次の例では、使用した結果を示してcenter
値:
例
.flex-container {
display: -webkit-flex;
display: flex;
-webkit-justify-content: center;
justify-content:
center;
width:
400px;
height: 250px;
background-color:
lightgrey;
}
次の例では、使用した結果を示しspace-between
の値を:
例
.flex-container {
display: -webkit-flex;
display: flex;
-webkit-justify-content: space-between;
justify-content:
space-between;
width:
400px;
height: 250px;
background-color:
lightgrey;
}
次の例では、使用した結果を示しspace-around
値を:
例
.flex-container {
display: -webkit-flex;
display: flex;
-webkit-justify-content: space-around;
justify-content:
space-around;
width:
400px;
height: 250px;
background-color:
lightgrey;
}
ALIGN-項目プロパティ
align-items
アイテムはクロス軸上のすべての利用可能なスペースを使用しないときに、プロパティは、垂直方向にフレキシブルコンテナのアイテムを揃えます。
設定可能な値は次のとおり:
-
stretch
-デフォルト値。 アイテムは、コンテナに収まるように伸縮され -
flex-start
-アイテムは、容器の上部に配置されています -
flex-end
-アイテムは、容器の底部に配置されています -
center
-アイテムが容器の中央に配置されている(上下方向) -
baseline
-アイテムは、容器のベースラインに配置されています
次の例では、使用した結果を示してstretch
(これはデフォルト値です)値:
例
.flex-container {
display: -webkit-flex;
display: flex;
-webkit-align-items: stretch;
align-items:
stretch;
width:
400px;
height: 250px;
background-color:
lightgrey;
}
次の例では、使用した結果を示しflex-start
値:
例
.flex-container {
display: -webkit-flex;
display: flex;
-webkit-align-items: flex-start;
align-items:
flex-start;
width:
400px;
height: 250px;
background-color:
lightgrey;
}
次の例では、使用した結果を示しflex-end
値:
例
.flex-container {
display: -webkit-flex;
display: flex;
-webkit-align-items: flex-end;
align-items:
flex-end;
width:
400px;
height: 250px;
background-color:
lightgrey;
}
次の例では、使用した結果を示してcenter
値:
例
.flex-container {
display: -webkit-flex;
display: flex;
-webkit-align-items: center;
align-items:
center;
width:
400px;
height: 250px;
background-color:
lightgrey;
}
次の例では、使用した結果を示しbaseline
値を:
例
.flex-container {
display: -webkit-flex;
display: flex;
-webkit-align-items: baseline;
align-items:
baseline;
width:
400px;
height: 250px;
background-color:
lightgrey;
}
フレックスラッププロパティ
flex-wrap
プロパティが1フレックスライン上で彼らのために十分なスペースがない場合は、フレックス項目は、ラップすべきか否かを指定します。
設定可能な値は次のとおり:
-
nowrap
-デフォルト値。 柔軟性のある項目は折り返されません -
wrap
-必要に応じて柔軟なアイテムがラップします -
wrap-reverse
-必要に応じて柔軟な項目は、逆の順序で、ラップします
次の例では、使用した結果を示してnowrap
値を(これはデフォルト値です):
例
.flex-container {
display: -webkit-flex;
display: flex;
-webkit-flex-wrap: nowrap;
flex-wrap: nowrap;
width:
300px;
height: 250px;
background-color:
lightgrey;
}
次の例では、使用した結果を示してwrap
値:
例
.flex-container {
display: -webkit-flex;
display: flex;
-webkit-flex-wrap: wrap;
flex-wrap: wrap;
width:
300px;
height: 250px;
background-color:
lightgrey;
}
次の例では、使用した結果を示してwrap-reverse
値:
例
.flex-container {
display: -webkit-flex;
display: flex;
-webkit-flex-wrap: wrap-reverse;
flex-wrap:
wrap-reverse;
width:
300px;
height: 250px;
background-color:
lightgrey;
}
ALIGN-コンテンツプロパティ
align-content
プロパティは、の挙動修正flex-wrap
プロパティを。 するのに似ているalign-items
のではなく、フレックスアイテムを揃えるのではなく、フレックスラインを揃えます。
設定可能な値は次のとおり:
-
stretch
-デフォルト値。 行は、残りのスペースを取るためにストレッチ -
flex-start
-行はフレックスコンテナの開始に向けてパックされています -
flex-end
-行はフレックスコンテナの端部に向かってパックされています -
center
-行はフレックスコンテナの中心に向かってパックされています -
space-between
-行が均等にフレックスコンテナに分布しています -
space-around
-行が均等にどちらかの端にハーフサイズのスペースで、フレックスコンテナに分布しています
次の例では、使用した結果を示してcenter
値:
例
.flex-container {
display: -webkit-flex;
display: flex;
-webkit-flex-wrap: wrap;
flex-wrap:
wrap;
-webkit-align-content: center;
align-content:
center;
width:
300px;
height: 300px;
background-color:
lightgrey;
}
Flexのアイテムのプロパティ
発注
order
プロパティは、同じコンテナ内の柔軟なアイテムの残りの部分に柔軟な項目の相対的な順序を指定します。
例
.flex-item {
background-color: cornflowerblue;
width: 100px;
height: 100px;
margin: 10px;
}
.first {
-webkit-order: -1;
order: -1;
}
マージン
設定margin: auto;
余分なスペースを吸収します。 異なる位置にフレックスアイテムをプッシュするために使用することができます。
次の例では、設定margin-right: auto;
最初のフレックスアイテムに。 これは、すべての余分なスペースは、その要素の右に吸収されるようになります:
例
.flex-item {
background-color: cornflowerblue;
width: 75px;
height: 75px;
margin: 10px;
}
.flex-item:first-child {
margin-right: auto;
}
パーフェクトセンタリング
完璧なセンタリング:次の例では、ほぼ毎日、問題を解決します。
それはフレキシボックスと非常に簡単です。 設定margin: auto;
アイテムが完全に両方の軸を中心に行います。
例
.flex-item {
background-color: cornflowerblue;
width: 75px;
height: 75px;
margin: auto;
}
揃える自己
align-self
フレックスアイテムのプロパティは、そのアイテムのフレックスコンテナのアライン-itemsプロパティをオーバーライドします。 これは、同じ可能な値がありalign-items
プロパティを。
次の例では、各フレックス項目に異なる整列自己の値を設定しています。
例
.flex-item {
background-color: cornflowerblue;
width: 60px;
min-height: 100px;
margin: 10px;
}
.item1 {
-webkit-align-self: flex-start;
align-self:
flex-start;
}
.item2 {
-webkit-align-self: flex-end;
align-self: flex-end;
}
.item3 {
-webkit-align-self: center;
align-self: center;
}
.item4 {
-webkit-align-self:
baseline;
align-self: baseline;
}
.item5 {
-webkit-align-self: stretch;
align-self: stretch;
}
フレックス
flex
プロパティは、同じコンテナ内のフレックスアイテムの残りの部分に比べて、フレックス項目の長さを指定します。
次の例では、最初のフレックス項目は空き領域の2/4を消費し、他の2つのフレックスの項目は、自由空間それぞれの1/4を消費します。
例
.flex-item {
background-color: cornflowerblue;
margin: 10px;
}
.item1 {
-webkit-flex: 2;
flex: 2;
}
.item2 {
-webkit-flex: 1;
flex: 1;
}
.item3 {
-webkit-flex: 1;
flex: 1;
}
その他の例
フレキシボックスで応答性のウェブサイトを作成します。
この例では、フレキシボックスに応答するWebサイトのレイアウトを作成する方法を示します。
CSS3フレキシボックスのプロパティ
次の表は、フレキシボックスで使用されるCSSプロパティを示しています。
Property | Description |
---|---|
display | Specifies the type of box used for an HTML element |
flex-direction | Specifies the direction of the flexible items inside a flex container |
justify-content | Horizontally aligns the flex items when the items do not use all available space on the main-axis |
align-items | Vertically aligns the flex items when the items do not use all available space on the cross-axis |
flex-wrap | Specifies whether the flex items should wrap or not, if there is not enough room for them on one flex line |
align-content | Modifies the behavior of the flex-wrap property. It is similar to align-items, but instead of aligning flex items, it aligns flex lines |
flex-flow | A shorthand propert for flex-direction and flex-wrap |
order | Specifies the order of a flexible item relative to the rest of the flex items inside the same container |
align-self | Used on flex items. Overrides the container's align-items property |
flex | Specifies the length of a flex item, relative to the rest of the flex items inside the same container |