フレックスコンテナーの主軸と交差軸を考えます。
出典:W3C
主軸に沿ってフレックスアイテムを配置するには、1つのプロパティがあります。
クロス軸に沿ってフレックスアイテムを配置するには、3つのプロパティがあります。
上の画像では、主軸は水平で、交差軸は垂直です。これらは、フレックスコンテナのデフォルトの方向です。
ただし、これらの方向はflex-direction
宿泊施設と簡単に交換できます。
/* main axis is horizontal, cross axis is vertical */
flex-direction: row;
flex-direction: row-reverse;
/* main axis is vertical, cross axis is horizontal */
flex-direction: column;
flex-direction: column-reverse;
(交差軸は常に主軸に対して垂直です。)
軸の働きを説明する上での私のポイントは、どちらの方向にも特別なものは何もないように見えることです。主軸、交差軸、重要度の点で同じであり、flex-direction
簡単に前後に切り替えることができます。
では、なぜ交差軸は2つの追加の配置プロパティを取得するのですか?
なぜされているalign-content
とalign-items
主軸のために一つの特性に統合?
主軸がjustify-self
プロパティを取得しないのはなぜですか?
これらのプロパティが役立つシナリオ:
フレックスコンテナーの隅にフレックスアイテムを配置する
#box3 { align-self: flex-end; justify-self: flex-end; }
フレックスアイテムのグループを右揃え(
justify-content: flex-end
)にするが、最初のアイテムを左揃え(justify-self: flex-start
)にするナビゲーションアイテムのグループとロゴを含むヘッダーセクションを考えます。
justify-self
ロゴのナビゲーションアイテムが右端に滞在し、全部が異なる画面サイズにスムーズに(「撓む」)を調整しながら、左整列させることができました。3つのフレックスアイテムの行で、中央のアイテムをコンテナの中央に貼り付け(
justify-content: center
)、隣接するアイテムをコンテナの端に揃えます(justify-self: flex-start
およびjustify-self: flex-end
)。隣接するアイテムの幅が異なる場合、値
space-around
とspace-between
onjustify-content
プロパティは中央のアイテムをコンテナの中央に配置しないことに 注意してください。
この記事の執筆時点で、の言及はありませんjustify-self
かjustify-items
におけるフレキシボックス仕様。
ただし、CSS Box Alignment Moduleには、すべてのボックスモデルで使用するための共通の配置プロパティセットを確立するというW3Cの未完成の提案があります。これは次のとおりです。
出典:W3C
あなたはそれに気づくでしょう、justify-self
そしてjustify-items
考慮されています... しかしflexboxのためではありません。
最後に、主な質問を繰り返します。
「justify-items」および「justify-self」プロパティがないのはなぜですか?
justify-content: flex-start
、アイテムは最初に| abcd |のように混雑します。justify-self: [anything]
アイテム 'b'をそこに置いた場合、何を期待しますか?)
justify-self
に働くと思いますか?auto
マージンはフレックスアイテムで既に機能しているのとそれほど変わりません。2番目の例ではjustify-self: flex-end
、アイテムdで遠端に移動します。それ自体は、auto
マージンが既に実行できる優れた機能です。デモで回答を投稿しました。
justify-content
ありjustify-self
、指定されているので、(私が尋ねたシナリオのように)矛盾のあるケースが発生します明確かつ賢明に定義されている。私はここに私の答えで述べたように、{justify|align}-self
アイテム揃える程度です独立の大きさで大きなボックス内の{justify|align}-self
値を -とフレックス項目がに整列するためには、このようなボックスは、メイン軸に、ありません。
justify-self
、justify-content
相互作用するかについて質問しました(それらが競合する場合(私が示したシナリオのように))。自動マージンはまったく相互作用しないjustify-content
-それらjustify-content
はそれを使用する機会を得る前に梱包スペースのすべてを盗む。したがって、自動マージンは、これがどのように機能するかについて、実際には良いアナログではありません。
justify-self
フレックスアイテムにはどのように働きますか?アイテムa、b、c、dがあり、それらの周りに配置するための追加のスペースがあり、フレックスコンテナーにがjustify-content: space-between
あるため、最終的に| abcd |のようになります。justify-self: center
アイテム「b」だけにeg または「justify-self:flex-end」を追加するとはどういう意味ですか?どこに行くと思いますか?(私はここの答えの1つにいくつかのデモを見ますが、それが一般的に機能するかどうかの明確な方法はわかりません。)