フレックスボックス(またはフレックスまたはフレキシブルボックスレイアウト)は、要素をボックス内で配置する方法です。フレックスボックスは1次元(垂直または水平)でレイアウトを制御できます。これはディスプレイ設定であり、他の要素に対してフレックスボックスを設定できることを意味します。
このレッスンでは、次について学びます:
レイアウト設計時の正確な配置とスタッキングを制御するためにフレックスボックスを使用します。
フレックスボックス(またはフレックスまたはフレキシブルボックスレイアウト)は、要素をボックス内で配置する方法です。フレックスボックスは1次元(垂直または水平)でレイアウトを制御できます。これはディスプレイ設定であり、他の要素に対してフレックスボックスを設定できることを意味します。
このレッスンでは、次について学びます:
要素にフレックスボックスを設定すると、通常は親要素に設定し、子要素の配置を制御できるようにします。フレックスボックスを使用する親要素は、「フレックス親」とも呼ばれます。フレックス親の直接の子要素は、「フレックス子」とも呼ばれます。
他の要素を含む要素からフレックス親を作成できます。フレックス親を作成するには:
他の表示設定とは異なり、親要素にフレックスを有効にすると、直接の子要素のレイアウトに影響を与えます。親要素にフレックスボックスを有効にすると、子要素が左揃えで水平にスタックされるデフォルトの表示になります。この表示をフレックス親の設定で調整できます。
親要素にフレックスボックスを設定した後、フレックス親とその子要素に対して多数のレイアウトオプションが利用できます。
デフォルトでは、フレックス親は水平方向に設定されています。方向を切り替えるには、フレックス親を選択し、スタイルパネル > レイアウト > ディレクション に移動し、水平 または 垂直 を選択します。
フレックス親の方向を反転するには、スタイルパネル > レイアウト > ディレクション に移動し、反転 アイコンをクリックします。これにより、要素の順序が反転し、最初の要素が最後になり、2番目の要素が2番目から最後になります。フレックス親の方向を反転することは、右から左へのサイトや、より小さいブレークポイントでのデザインに便利です。
フレックス子の垂直配置を変更するには、フレックス親を選択し、スタイルパネル > レイアウト > アライン に移動します。次に、次の配置オプションのいずれかを選択します:
フレックス子要素の水平方向の配置を変更するには、フレックス親要素を選択し、次にStyle panel > Layout > Justify に移動します。そして、次の配置オプションのいずれかを選択します:
隙間を使用すると、フレックス子要素間のスペースを追加する際に、マージンやパディングを追加する必要がありません。列と行の間の隙間サイズを調整するには、フレックス親要素を選択し、次に Style panel > Layout > Gap に移動します。
デフォルトでは、列と行の間の隙間はロックされています。これは、列の隙間サイズを変更する場合、行の隙間サイズも自動的に同じ数値に調整されることを意味します。列と行の間の隙間を独立して調整するには、隙間の間にある「lock」アイコンをクリックします。
デフォルトでは、フレックス子要素は1行に収めようとします。これを変更するには、子要素を折り返すことができます。Style panel > Layout > Wrap に移動し、折り返し(wrap) を選択します。
子要素を折り返すと、以下のオプションを使用して複数の行のコンテンツを水平方向に整列させることができます:
また、子要素の折り返しを逆にする には、Style panel > Layout > Wrap に移動し、「reverse wrap」アイコンをクリックします。
フレックス子要素のデフォルトのレイアウトは、フレックス親要素に設定されたフレックスレイアウトの設定に基づいています。ただし、フレックス子要素の場合はこれらの設定をオーバーライドすることができます:
フレックスの子のサイズを調整するには、子を選択し、スタイルパネル > フレックスの子 > サイズを調整します。サイズ調整には4つのオプションがあります:
フレックスの子のサイズを調整するには、子を選択し、Style panel > Flex child > Sizing を調整します。サイズ調整には4つのオプションがあります:
すべてのフレックス子要素が Grow if possible、Shrink if needed、または Don’t shrink or grow のいずれかに設定されている場合、それらのサイズが調整された後の余白は、 Grow if possibleに設定されている子要素に均等に分配されます。
Shrink if needed は、フレックス子要素の幅と高さのプロパティ(またはフレックス子要素内のコンテンツ、幅と高さが設定されていない場合)に基づいてフレックス子要素のサイズを調整します。これにより、余白が残っている場合にはフレックス子要素が柔軟であり、十分なスペースがない場合には最小限に縮小されるようになります。
Grow if possible は、フレックス子要素が拡大できるスペースがある場合に拡大するようにします。これにより、フレックス子要素はフレックス親要素内の余分なスペースを吸収することができます。
Don’t shrink or grow は、フレックス子要素の幅/高さプロパティに応じてサイズを調整し、完全に柔軟にします。フレックス子要素はオーバーフローの状況でも縮小することは許されません。
また、子要素の成長と縮小の動作を完全にカスタマイズすることもできます。これにより、フレックス子要素がフレックス親要素内の他の子要素に対してどれだけ縮小または拡大するかが決まります。
Grow は、親要素内の余白スペースが分配される際に、フレックス子要素が他の子要素に対してどれだけ成長できるかを定義します。この値が0に設定されている場合、必要な範囲以上に成長することはありません。
Shrink は、負の空きスペースが分配される際に、フレックス子要素が他の子要素に対してどれだけ縮小できるかを定義します。この値が0に設定されている場合、オーバーフローの状況でも縮小されることはありません。
Basis は、flex-growまたはflex-shrinkが適用される前の要素のデフォルトサイズを決定します。これを特定の寸法(例:20%、250pxなど)またはAutoに設定できます。Autoに設定されている場合、フレックス子要素のデフォルトサイズは、幅または高さに基づいて(設定されている場合)、またはコンテンツに基づいています。Basisが特定の寸法に設定されている場合、要素のコンテンツまたは幅/高さは無視され、フレックス子要素は他のフレックス子要素とサイズを共有します。
フレックスの子を選択し、 Style panel > Flex child > Alignで、フレックスの子の整列を調整できます。整列には6つのオプションがあります:
デフォルトでは、フレックス子要素はソースコード内で配置された順序通りに表示されます(この順序はナビゲータで確認できます)。しかし、異なるブレークポイントでデザインを調整したい場合には、フレックス子要素の順序を変更することが便利です。
フレックス子要素のデフォルトの順序を上書きするには、子要素を選択し、次にStyle panel > Flex child > Order に移動します。順序には以下の6つのオプションがあります:
カスタムな順序値を使用して、フレックス子要素がフレックス親要素内で表示される順序を指定することができます。同じカスタムな順序値を持つフレックス子要素は、最初に配置された順序で配置されます。
カスタムな順序を使用する際には、最初の子要素や最後の子要素を指定するために Make first や Make last を使用しないでください。Make last はフレックス子要素の順序を-1に設定し、Make last はフレックス子要素の順序を1に設定します。カスタムな順序を使用する際には、1より大きい任意の数値は、Make last の順序が設定されたフレックス子要素の後にフレックス子要素を配置します。-1より小さい任意の数値は、Make lastの要素の前にフレックス子要素を配置します。