原文: CSS3 Flexbox Properties のビジュアルガイド
Flex レイアウトは正式には CSS Flexble Box と呼ばれます レイアウト モデルは、コンテナ内の要素の配置、方向、順序を改善するために CSS3 です。動的または不定サイズの新しいレイアウト モデルです。 Flex コンテナの主な機能は、子要素を調整して、さまざまな画面サイズで最適な方法で適切なスペースを埋める機能です。
多くのデザイナーや開発者は、要素の配置が簡単であるため、多くの複雑なレイアウトを非常に少ないコードで実装でき、開発プロセスが簡素化できると感じています。 Flex レイアウト アルゴリズムは方向に基づいており、水平または垂直のブロックやインライン レイアウトとは異なります。この Flex レイアウトは小規模なアプリケーション コンポーネントで使用できますが、大規模なレイアウトを処理するために CSS3 グリッド レイアウト モデルが登場しています。
この記事では、flex の各属性がレイアウトにどのような影響を与えるかを主に説明します。
Flexbox プロパティの説明を始める前に、Flexbox モデルを簡単に紹介しましょう。 Flex コンテナ (flex-container) と呼ばれる親コンテナとその直接の子要素と呼ばれます。 フレックス アイテム (flex-item)。以下では「コンテナ」および「アイテム」と呼ばれます。
上の画像では、Flex コンテナとその子要素を説明するために使用される 属性と用語 を確認できます。それらの意味を理解するには、W3C の公式ドキュメントを読むことができます。
Flexbox は、2009 年に W3C によって提案された新しいレイアウト ソリューションです。ここでは、2014 年 10 月の最新規格が使用されており、その最新のブラウザーがサポートされています
Chrome 29+
2、使用法:
.flex-container { display: -webkit-flex; /* Safari */ display: flex;}
.flex-container { display: -webkit-inline-flex; /* Safari */ display: inline-flex;}
flex-direction:row(默认值) | row-reverse | column | column-reverse;
値:
.flex-container { -webkit-flex-direction: row; /* Safari */ flex-direction: row;}
.flex-container { -webkit-flex-direction: row-reverse; /* Safari */ flex-direction: row-reverse;}
.flex-container { -webkit-flex-direction: column; /* Safari */ flex-direction: column;}
列の方向は、フレックス項目が列内で上から下に積み重ねられることを示します
.flex-container { -webkit-flex-direction: column-reverse; /* Safari */ flex-direction: column-reverse;}
column-reverse 方向は次のことを示しますフレックス項目は、列内で下から上に積み上げられています
flex-wrap:nowrap(默认值) | wrap | wrap-reverse;
値:
.flex-container { -webkit-flex-wrap: nowrap; /* Safari */ flex-wrap: nowrap;}
.flex-container { -webkit-flex-wrap: wrap; /* Safari */ flex-wrap: wrap;}
項目 (フレックス項目) は複数の行に表示され、必要に応じて左から右または上から下に配置できます。
.flex-container { -webkit-flex-wrap: wrap-reverse; /* Safari */ flex-wrap: wrap-reverse;}
flex-flow: <flex-direction> || <flex-wrap>;
rreee
値:
.flex-container { -webkit-flex-flow: <flex-direction> || <flex-wrap>; /* Safari */ flex-flow: <flex-direction> || <flex-wrap>;}
すべてのアイテムはコンテナの左側に配置されます
justify-content:flex-start(默认值) | flex-end | center | space-between | space-around;
コンテナ内のすべてのアイテムを中央に揃えます
.flex-container { -webkit-justify-content: space-between; /* Safari */ justify-content: space-between;}
.flex-container { -webkit-justify-content: space-around; /* Safari */ justify-content: space-around;}
align-items:flex-start | flex-end | center | baseline | stretch(默认值);
定义项目在交叉轴上的对齐方式,交叉轴与当前的轴线有关系,与justify-content很相似,只不过是垂直方向的;这属性为所有的项目设置默认的交叉轴上的对齐方式,包括匿名的。
values:
.flex-container { -webkit-align-items: stretch; /* Safari */ align-items: stretch;}
.flex-container { -webkit-align-items: flex-start; /* Safari */ align-items: flex-start;}
项目会堆放在容器交叉轴的起始位置(cross start )。
.flex-container { -webkit-align-items: flex-end; /* Safari */ align-items: flex-end;}
.flex-container { -webkit-align-items: center; /* Safari */ align-items: center;}
.flex-container { -webkit-align-items: baseline; /* Safari */ align-items: baseline;}
基线?不知道基线是什么请戳这里-->基线是什么?
align-content:flex-start | flex-end | center | space-between | space-around | stretch(默认值);
values:
.flex-container { -webkit-align-content: stretch; /* Safari */ align-content: stretch;}
.flex-container { -webkit-align-content: flex-start; /* Safari */ align-content: flex-start;}
.flex-container { -webkit-align-content: flex-end; /* Safari */ align-content: flex-end;}
.flex-container { -webkit-align-content: center; /* Safari */ align-content: center;}
.flex-container { -webkit-align-content: space-between; /* Safari */ align-content: space-between;}
.flex-container { -webkit-align-content: space-around; /* Safari */ align-content: space-around;}
注意:这个属性仅仅当容器中有多行的项目时有效,如果所有项目仅仅占一行,那这个属性对布局没有任何影响。
<span style="font-size:14px; font-family: Arial, Helvetica, sans-serif;"> order: <integer></span>
values:
values:.flex-item { -webkit-order: <integer>; /* Safari */ order: <integer>;}
<span style="font-size:14px;">flex-grow: <number></span>
.flex-item { -webkit-flex-grow: <number>; /* Safari */ flex-grow: <number>;}
当所有的项目的flex-grow值相等的时候它们的size相同。
第二个项目占用了更多的剩余空间。
默认值是:0
注意:负数在这个属性中是没有用的
flex-shrink: <number>
values:
.flex-item { -webkit-flex-shrink: <number>; /* Safari */ flex-shrink:;}
默认情况下,所有的项目都会收缩,但是当我们设置该属性的值为0的时候,项目会保持原有的大小。
默认值是:1
注意:负数在这个属性中是没有用的
flex-basis:auto | <width>
values:
.flex-item { -webkit-flex-basis: auto | <width>; /* Safari */ flex-basis: auto | <width>;}
flex:none | auto | [ <flex-grow> <flex-shrink>? || <flex-basis> ]
values:
.flex-item { -webkit-flex: none | auto | [ <flex-grow> <flex-shrink>? || <flex-basis> ]; /* Safari */ flex: none | auto | [ <flex-grow> <flex-shrink>? || <flex-basis> ];}
align-self:auto | flex-start | flex-end | center | baseline | stretch;
.flex-item { -webkit-align-self: auto | flex-start | flex-end | center | baseline | stretch; /* Safari */ align-self: auto | flex-start | flex-end | center | baseline | stretch;}
注意:auto 表示项目会使用父元素(容器)的align-items的值,如果该项目没有父元素的话align-self的值是stretch。
flex items值得注意的是:float、clear、vertical-align这些属性对于项目(flex item)会失效。