banner
jzman

jzman

Coding、思考、自觉。
github

微信小程序のFlexコンテナの詳細解説

Flex は W3C が提案した新しいレイアウト方式で、レスポンシブページのレイアウトを非常に簡単に実現できます。現在までにほぼすべてのブラウザがサポートしており、Flex は Flexible Box の略で、翻訳すると「弾性レイアウト」という意味です。以下で Flex レイアウトの使用について学びましょう。

  1. 基本概念
  2. flex コンテナ属性
  3. flex アイテム属性
  4. まとめ

基本概念#

Flex レイアウトを採用した要素は Flex コンテナと呼ばれ、すべての子要素は自動的にコンテナのメンバーとなり、Flex アイテムとも呼ばれます。これはその Flex レイアウトの子 View です。以下は Flex レイアウトのデフォルト設定下の示意図です:

image

上の図に示すように、デフォルトの Flex コンテナには 2 つの軸があります:水平の主軸 (main axis) と垂直の交差軸 (cross axis) です。主軸と交差軸の方向は絶対的なものではなく、設定によって異なる場合があります。以下は主軸と交差軸に関連するいくつかの位置です:

  • 主軸起点 (main start):主軸の開始位置
  • 主軸の終点 (main end):主軸の終了位置
  • 主軸空間 (main size):単一の Flex アイテムが占める主軸空間
  • 交差軸の起点 (cross start):交差軸の起点
  • 交差軸の終点 (cross end):交差軸の終了点
  • 交差軸空間 (cross size):単一の Flex アイテムが占める交差軸空間

flex コンテナ属性#

  1. flex-direction:主軸の方向を設定します。設定可能な値は以下の通りです:
  • row:デフォルト値、主軸を水平方向に設定し、起点は左側
  • row-reverse:主軸を水平方向に設定し、起点は右側
  • column:主軸を垂直方向に設定し、起点は上側
  • column-reverse:主軸を垂直方向に設定し、起点は下側

image

  1. flex-wrap:改行の方法を設定します。設定可能な値は以下の通りです:
  • nowrap:デフォルト値、改行しない
  • wrap:自動改行
  • wrap-reverse:自動改行、第一行の上の行

image

  1. flex-flow:flex-direction 属性と flex-wrap 属性の省略形で、デフォルト値は row nowrap です。

  2. justify-content:主軸上のアイテムの整列方法を設定します。設定可能な値は以下の通りです:

  • flex-start:デフォルト値、左揃え
  • flex-end:右揃え
  • center:中央揃え
  • space-between:両端揃え
  • space-around:各アイテムの両側の間隔が等しく、画面の端との間隔は他のアイテム間の間隔の半分
  • space-evenly:各アイテムを均等に分布し、画面の端との間隔が他のアイテム間の間隔と等しい

image

  1. align-items:交差軸上でのアイテムの整列方法を設定します。設定可能な値は以下の通りです:デフォルト値では、指定された高さがないアイテムや auto に設定されたアイテムは、コンテナの高さ全体を占めます。設定可能な値は以下の通りです:
  • stretch:デフォルト値、指定された高さがないアイテムや auto に設定されたアイテムは、コンテナの高さ全体を占めます。下の図のアイテム 1 は高さを指定しておらず、他のアイテムは高さを指定しています。
  • flex-start:交差軸の起点に揃える
  • flex-end:交差軸の終点に揃える
  • center:交差軸の中心に揃える
  • baseline:アイテムとアイテムの中の最初の行の文字の基線を揃える

image

  1. align-content:複数の軸線の整列方法を設定します。1 つの軸しかない場合、この属性は無効です。設定可能な属性は以下の通りです:
  • stretch:デフォルト値、軸線が交差軸全体を占める
  • flex-start:交差軸の起点に揃える
  • flex-end:交差軸の終点に揃える
  • center:交差軸の中点に揃える
  • space-between:交差軸の両端に揃え、軸線間の間隔を均等に分布
  • space-around:各軸線の両側の間隔が等しく、軸線と軸線の間隔は軸線から交差軸の端までの間隔の 2 倍

image

flex アイテム属性#

  1. order:デフォルト値は 0 で、アイテムの配置順序を設定します。数値が小さいほど前に配置されます。以下の図に示します:

image

  1. flex-grow:アイテムの拡大比率を設定します。デフォルト値は 0 で、残りの空間があっても拡大しません。以下の図に示します:

image

  1. flex-shrink:アイテムの縮小比率を設定します。デフォルト値は 1 で、アイテムの空間が不足している場合、アイテムは縮小します。以下の図に示します:

image

上の図に示すように、flex-shrink がすべて 0 に設定されている場合、各アイテムはスケールしないため、4 つ目のボックスが押し出されます。対応する設定で flex-shrink を 1 にすると、空間が不足している場合に一定の程度でスケールできます。

  1. flex-basis:アイテムが占める主軸空間です。以下の図に示します:

image

  1. align-self:要素自身の整列方法を定義します。この属性は align-items 属性とほぼ同じで、具体的には一つ一つ紹介しません。直接効果図を以下に示します:

image

上の効果では、auto を設定すると、flex コンテナ内の align-items の設定に従います。

  1. flex:flex は flex-grow、flex-shrink、flex-basis の省略形で、デフォルト値は 0 1 auto です。ここでは効果図を貼りません。

まとめ#

最近、WeChat ミニプログラムを試してみましたが、開発の難易度はそれほど高くないと感じました。本記事の内容は WeChat ミニプログラムの中で最も重要な内容だと思います。本来はミニプログラムシリーズの学習を続けるつもりでしたが、後の内容はミニプログラムの各コンポーネントの使用に過ぎないことがわかりました。他のプロジェクトの開発経験があれば、1 つのコンポーネントを検証して学ぶ必要はありませんので、ミニプログラムの学習はここで終了します。最後に、WeChat ミニプログラムで最も重要なのは Flex レイアウトだと思います。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。