背景 フレックス レイアウトにより、配置とスペースの割り当てがより効果的に実現されます。最近、flex子要素のサイズ計算ルール、主に 1. 基本概念 1.1 主軸 フレックス要素レイアウトの開始点と方向が定義され、フレックス子要素が主軸上に 1 つずつ配置されます。 主軸には
水平方向、左から右、デフォルト
水平方向、右から左へ
垂直方向、上から下へ
垂直方向、下から上へ 1.2 主軸サイズ これは、フレックス コンテナー コンテンツの長方形 (パディング、境界線、および余白領域を除く) の主軸方向のサイズです。 1.3 交差軸 交差軸は主軸ハンマーの方向であり、主にフレックス要素の位置合わせに使用されます。 1.4 交差軸のサイズ これは、クロス軸方向のフレックス コンテナー コンテンツの長方形 (パディング、境界線、および余白領域を除く) のサイズです。 1.5 フレックスボックスモデル display が 1. フレックス コンテナーには、フレックス アイテムだけでなく空きスペースも含まれます。 2. CSS は flex-directionflex-wrapflex-flow に関係します
flex-direction と flex-wrap の略。
フレックス コンテナー コンテンツ (フレックス アイテムと空きスペース) の主軸に沿った配置を制御します。 align-items の違いに注意してください。
複数行のフレックス コンテナー内の行の配置を制御します。
フレックス コンテナー コンテンツ (フレックス アイテムと空きスペース) の交差軸方向の配置を制御します。 ヒント: 1. これらの CSS プロパティはすべて関連しています。 まず、フレックスコンテナの主軸の方向を指定します (flex-direction)。フレックス子要素が主軸のサイズを超えた場合に、折り返すかどうかを指定します (flex-wrap)。主軸のサイズを超えていない場合は、インライン配置 (justify-content) が必要になります。行が複数ある場合は、各行も直接配置する必要があります (align-content)。 2. justify-content、align-content、align-items を混同しやすい場合があります。 コンテンツはフレックス アイテムと空きスペースを指し、アイテムはフレックス アイテムを指すことに注意してください。これが、これら 3 つの属性の有用性です。 1.6 フレックスアイテム 1. 構文 フレックス ボックスの子要素には、フロー外の子要素 (絶対固定要素) は含まれませんが、フロート要素は含まれます。 flex サブ要素の隣接するマージンは結合されません。 フロート要素がフレックス子要素として使用されている場合、フロートプロパティは無効になります (フローレイアウトではなくフレックスレイアウトに参加するため)。 2. CSSプロパティの使用
フレックス要素が主軸方向に占めるフレックス コンテナーのサイズを指定します。デフォルトは auto です。つまり、フレックス要素のサイズが占有するサイズとして使用されます (主軸は行値を持つフレックス要素の幅、主軸は列値を持つフレックス要素の高さです)。空きスペースがあるかどうかは、この属性に基づいて計算されます。 注: flex 要素が占めるサイズは flex-basis に関連しており、要素の幅や高さとは直接関係がありません。
各フレックス要素の弾性成長係数、つまり占有される正の空きスペースの比例配分を指定します。値が0(デフォルト)の場合、空きスペースは占有されません。
各フレックス要素の弾性収縮係数、つまり割り当てられる負の空き領域の比例配分を指定します。ただし、要素を 0 まで無限に縮小したり、要素の最小サイズ (min-width や min-height など) よりも小さくしたりすることはできません。
flex-grow flex-shrink flex-basis の略語
交差軸上の位置合わせを調整します。このプロパティは、交差軸が完全に占有されていない場合にのみ有効です。
注文を指定する 2. 空き容量とフレックスベースの計算 主軸上の flex 子要素の比率は、次の 3 つの CSS プロパティによって決まります。
で: 2.1 ルール
2.2 残りの空き容量の計算 空き容量の計算 フレックス コンテナの空き領域を計算する前に、予想される自己使用領域では、まずフレックス子要素が占めるサイズを数える必要があります。これはフレックス子要素の余白領域のサイズを指し、隣接するフレックス子要素の余白は結合されないことに注意してください。 残りの空き容量計算 = 空き容量計算 - 予想される自己使用容量 正の空き領域: 正の値を持つ残りの空き領域には、flex-basis + flex-grow の組み合わせが使用されます。 負の空き領域 負の値と正の値を持つ残りの空き領域には、flex-basis + flex-shrink の組み合わせが使用されます。 3. flex-growについて詳しく知る 3.1 ルール 正の空きスペースがある場合は、
しかし、結局のところ、ケーキは 1 つだけなので、フレックス コンテナーは、ケーキを比例して分割する簡単な方法を使用して、felx 子要素の要件を満たそうとします。
3.2 デモ1: ケーキを割合に応じて分ける 関数demo1() { 戻る ( <> <div className="flex"> <div className="item" style={{flexBasis: 100, flexGrow: 1, marginRight: 10}}>1</div> <div className="item" style={{flexBasis: 150, flexGrow: 2, }}>2</div> </div> <スタイルjsx>{` .flex { ディスプレイ: フレックス; 幅: 600ピクセル; アウトライン: 1px 破線赤; } 。アイテム { パディング: 10px; 境界線: 10px 実線 #666666; } ` </スタイル> </> ) } 分析: 残りの空き容量を計算する
各フレックス子要素の成長サイズを計算する
3.3 デモ2: SUM(flex-grow) < 1 関数demo3() { 戻る ( <> <div className="flex"> <div className="item" style={{flexBasis: 100, flexGrow: 0.2, marginRight: 10}}>1</div> <div className="item" style={{flexBasis: 150, flexGrow: 0.3, }}>2</div> </div> <スタイルjsx>{` .flex { ディスプレイ: フレックス; 幅: 600ピクセル; アウトライン: 1px 破線赤; } 。アイテム { パディング: 10px; 境界線: 10px 実線 #666666; } ` </スタイル> </> ) } 分析: 残りの空き容量を計算する
各フレックス子要素の成長サイズを計算する
知らせ: SUM(flex-grow) が 1 未満の場合、残りのスペースは各 flex 子要素に完全に割り当てられません。 3.3 Demo3はmax-widthと競合する この例では次の点に注意してください。
関数demo4() { 戻る ( <> <div className="flex"> <div className="item" style={{flexBasis: 100, flexGrow: 1, marginRight: 10, maxWidth: 150}}>1</div> <div className="item" style={{flexBasis: 150, flexGrow: 2 }}>2</div> <div className="item" style={{flexBasis: 100, flexGrow: 3 }}>3</div> </div> <スタイルjsx>{` .flex { ディスプレイ: フレックス; 幅: 800ピクセル; アウトライン: 1px 破線赤; } 。アイテム { パディング: 10px; 境界線: 10px 実線 #666666; ボックスのサイズ: 境界線ボックス; } ` </スタイル> </> ) } 分析: 残りの空き容量を計算する フレックスコンテナの主軸サイズ = 800px 要素 1 の希望サイズ = 100px(flex-basis) + 10px(margin-right) = 110px 要素2の希望サイズ = 150px (flex-basis) = 150px 要素3の希望サイズ = 150px (flex-basis) = 150px 残りの空きスペース = 800px - 110px - 150px - 150px = 390px、つまり、残りのスペースはプラスです。 各フレックス子要素の成長サイズを計算する
このように、要素 1 のサイズは 要素 2 と要素 3 は空き領域を残すために再割り当てされます。つまり、手順 1 に戻って再計算することになります。
3.4 要約:
4. フレックスシュリンクについて詳しく知る 4.1 ルール 負の空きスペースがある場合は、
フレックス コンテナーは感動しましたが、各フレックス子要素の感情に配慮するために、「より合理的な」割り当てルールが採用されました。
計算ルールは上記よりも複雑で、負の空きスペースの単純な分割ではありません。収縮の量は、flex-shrink だけでなく、flex-basis にも依存します。これは単に「より合理的」にするためであり、つまり、同じフレックス シュリンク条件の下では、フレックス ベースが小さいほど、フレックス要素の縮小が遅くなります (税金を支払うのと同じように、収入が高いほど支払う金額が多くなります)。 注意: flex-shrink の合計が 1 未満の場合、負の空き領域の一部が分散されていることを意味します (つまり、一部のサイズは縮小されません)。 4.2 デモ1:「富裕層と貧困層の格差を縮小する」 関数demo5() { 戻る ( <> <div className="flex"> <div className="item" style={{flexBasis: 100, flexGrow: 1, marginRight: 10}}>1</div> <div className="item" style={{flexBasis: 150, flexGrow: 2, flexShrink: 2 }}>2</div> </div> <スタイルjsx>{` .flex { ディスプレイ: フレックス; 幅: 300ピクセル; アウトライン: 1px 破線赤; } 。アイテム { パディング: 10px; 境界線: 10px 実線 #666666; } ` </スタイル> </> ) } 分析 (長すぎるとフレックス グロー プロセスに類似します): 残りの空き容量を計算する
各フレックスサブ要素の縮小サイズを計算する
4.2 デモ: SUM(flex-shrink) < 1 関数demo8() { 戻る ( <> <div className="flex"> <div className="item" style={{flexBasis: 100, flexShrink: 0.2, marginRight: 10}}>1</div> <div className="item" style={{flexBasis: 150, flexShrink: 0.3 }}>2</div> </div> <スタイルjsx>{` .flex { ディスプレイ: フレックス; 幅: 300ピクセル; アウトライン: 1px 破線赤; } 。アイテム { パディング: 10px; 境界線: 10px 実線 #666666; } ` </スタイル> </> ) } フレックス アイテムはフレックス コンテナーを超えて拡張されます。 分析: 残りの空き容量を計算する
各フレックスサブ要素の縮小サイズを計算する
4.4 デモ3: box-sizing = border-box 注: 要素 1、2 関数demo6() { 戻る ( <> <div className="flex"> <div className="item" style={{flexBasis: 100, flexGrow: 1, marginRight: 10}}>1</div> <div className="item" style={{flexBasis: 150, flexGrow: 2, flexShrink: 2 }}>2</div> </div> <スタイルjsx>{` .flex { ディスプレイ: フレックス; 幅: 200ピクセル; アウトライン: 1px 破線赤; } 。アイテム { パディング: 10px; 境界線: 10px 実線 #666666; ボックスのサイズ: 境界線ボックス; } ` </スタイル> </> ) } 分析: 残りの空き容量を計算する
各フレックスサブ要素の縮小サイズを計算する
4.5 Demo5はmin-widthと競合する この例では次の点に注意してください。 要素1の 関数demo7() { 戻る ( <> <div className="flex"> <div className="item" style={{flexBasis: 100, flexShrink: 2, marginRight: 10, minWidth: 60}}>1</div> <div className="item" style={{flexBasis: 150, flexShrink: 2 }}>2</div> <div className="item" style={{flexBasis: 100, flexShrink: 1 }}>3</div> </div> <スタイルjsx>{` .flex { ディスプレイ: フレックス; 幅: 300ピクセル; アウトライン: 1px 破線赤; } 。アイテム { パディング: 10px; 境界線: 10px 実線 #666666; } ` </スタイル> </> ) } 分析: 残りの空き容量を計算する
各フレックスサブ要素の縮小サイズを計算する
要素 2 と要素 3 は空き領域を残すために再割り当てされます。つまり、手順 1 に戻って再計算することになります。
4.6 まとめ
参照する css-tricks: Flexbox の完全ガイド 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 |
<<: ウェブデザイナーは3つの側面からウェブページを最適化する必要がある
Animation.css を使うと公式サイトのフォントがだんだんと変わっていくのが分かりました。c...
この記事では、explain を使用して SQL ステートメントを分析する方法を紹介します。実際、イ...
この記事では、Dockerでイメージ情報を表示する方法を学ぶ必要があります。 1. imagesコマ...
<meta name="viewport" content="w...
JSXとは何かJSX は Javascript の構文拡張であり、JSX = Javascript ...
この記事の例では、参考のためにjsカスタム右クリックメニューの具体的なコードを共有しています。具体的...
この記事ではMySQL 8.0.22のインストールと設定について記録します。具体的な内容は以下のとお...
入力ボックスが小さい場合、内容を入力した後に、入力内容が拡大されたプロンプト ボックスを表示したいこ...
目次1. エフェクト表示2. 検証コードとメールプッシュ管理の強化(後述のブログを参照) 3. 一般...
序文1. デバウンス: 高頻度イベントがトリガーされた後、関数は n 秒以内に 1 回だけ実行されま...
1. Concat関数。よく使用される接続文字列: concat 関数。たとえば、SQLクエリ条件...
Linux viコマンドの詳しい説明vi エディタは、すべての Unix および Linux システ...
WeChatコンポーネントの形式で提供されます。コンポーネント内部ではasync/awaitが使用さ...
最新のソリューション: -v /usr/share/zoneinfo/Asia/Shanghai:/...
目次1. データベースを理解する1.1 データベースとデータ構造の関係1.2 なぜデータベースが必要...