目次
flex-basis
flex-shrink
flex 的简写值
flex: 的应用:
两栏布局
三栏布局
结束语
ホームページ ウェブフロントエンド CSSチュートリアル 3 つのフレックス プロパティが要素に及ぼす影響について詳しく説明した記事

3 つのフレックス プロパティが要素に及ぼす影響について詳しく説明した記事

Aug 30, 2022 pm 07:50 PM
css flex

3 つのフレックス プロパティが要素に及ぼす影響について詳しく説明した記事

flex 属性は、開発中にフレキシブル ボックスの子要素に作用するためによく使用されます (例: flex:1 または flex: 1)。 1 auto では、この属性は要素の動作を正確に制御するのでしょうか? flex:1これは正確にはどういう意味ですか?この記事では、flex プロパティについて徹底的に理解していきます。 [推奨される学習: css ビデオ チュートリアル ]

まず、flex には 3 つの属性があることを理解する必要があります。flex-growflex-shrinkflex-basis の略称で、1 つ、2 つ、または 3 つの値を使用して flex 属性を指定できます。特定の構文については、MDN-flex

を参照してください。次に、要素に対するこれら 3 つの属性の影響を 1 つずつ分解していきます。

flex-basis

flex-basis は、スペース割り当てが発生する前に初期化された flex 子要素のサイズを定義します。属性 default 値は auto; flex 子要素の前にあります伸びるか縮むか、そのサイズは何になります。

flex-basis が auto に設定されている場合、ブラウザはまず flex 子要素のメイン サイズが flex 子要素の初期値に設定されているかどうかを確認します。

たとえば、フレックス子要素の幅を 150 ピクセルに設定した場合、150 ピクセルがこのフレックス子要素のフレックスベースになります。設定されていない場合、auto はそのサイズに解決されます。コンテンツ。この例では、最初の要素の幅は 150px に設定され、2 番目と 3 番目の要素の幅は設定されていません。

:first-child {
  width: 150px;
}
ログイン後にコピー

結果は次のとおりです:

3 つのフレックス プロパティが要素に及ぼす影響について詳しく説明した記事

フレックスボックスでフレックス子要素のサイズを完全に無視したい場合は、flex-basis を 0 に設定します。このように、要素 1 に幅が設定されている場合でも、その最終的な幅がコンテンツの幅になります。

3 つのフレックス プロパティが要素に及ぼす影響について詳しく説明した記事

#正の空き領域と負の空き領域

残りの 2 つの属性を紹介する前に 2 つの概念を見てみましょう

正の空き領域 正の空き領域と 負の空き領域逆方向の空き領域:

  • 前方の空き領域

    たとえば、ワイドの場合は 500 ピクセルがあります。 flex コンテナで、flex-direction 属性値が row で、幅 100 ピクセルの flex 子要素が 3 つある場合、埋められていない 200 ピクセルが正の空き領域になります。

3 つのフレックス プロパティが要素に及ぼす影響について詳しく説明した記事

    #逆空きスペース
  • 子要素の幅の合計が、コンテナの幅、オーバーフロー サイズ100pxは逆の空き領域です。

3 つのフレックス プロパティが要素に及ぼす影響について詳しく説明した記事では、正と負の空き領域を割り当てるにはどのような属性が使用されるのでしょうか?

flex-grow

    flex-grow
  • デフォルト値 0 (正の整数が割り当てられている場合)フレックス要素は、フレックスベースに基づいて主軸に沿ってサイズが拡大し、利用可能なスペースを占有します。 flex-grow は、成長スペースを比例的に割り当てます。
  • 初期状態: 3 つの要素すべての幅を設定し、合計は主軸の幅を超えません
.flex-grow-father {
  width: 500px;
  div:nth-child(1) {
    width: 50px;
  }
  div:nth-child(2) {
    width: 100px;
  }
  div:nth-child(3) {
    width: 150px;
  }
}
ログイン後にコピー

增加的宽度计算方法:假设元素的 flex-grow 值为 x,正向自由空间宽度为l,则每个元素增加的宽度=xx的总和l\frac{x}{x的总和}*l,元素最终宽度 = 元素初始宽度+增加的宽度元素初始宽度 + 增加的宽度

  • 相同比例增长:当给每个子元素的都设定相同的 flex-grow 值,每个元素就会增长相同的宽度
.with-same-flex-grow {
  * {
    flex-grow: 1;
  }
}
ログイン後にコピー

效果如下:

3 つのフレックス プロパティが要素に及ぼす影響について詳しく説明した記事

この例の最初の要素の幅の計算11 1 1##∗200 50=116.67px##\frac{1}{1 1 1}*200 50 = 116.67px

第二个元素宽度宽度计算 11+1+1200+100=166.67px\frac{1}{1+1+1}*200 + 100 = 166.67px

第三个同理为216.67px216.67px

  • 不同比例增长:给每个子元素的都设定不同的 flex-grow 值
.with-different-flex-grow {
  div:nth-child(1) {
    flex-grow: 2;
  }
  div:nth-child(2) {
    flex-grow: 1;
  }
  div:nth-child(3) {
    flex-grow: 1;
  }
}
ログイン後にコピー

效果如下:

3 つのフレックス プロパティが要素に及ぼす影響について詳しく説明した記事

この例の最初の要素の幅の計算22 1 1##∗200 50=150pxx\frac{2}{2 1 1}*200 50 = 150px

第二个元素宽度的计算12+1+1200+100=150px\frac{1}{2+1+1}*200 + 100 = 150px

第三个同理是200px200px

  • 如果想让开始时尺寸不同的元素内容宽度相等(平分容器宽度),可以将 flex-basis 设置为 0(完全忽略 flex 子元素的尺寸) flex-grow 为 1(等比例分配)
.average {
  * {
    /* flex: 1 1 0; */
    flex-basis: 0;
    flex-grow: 1;
  }
}
ログイン後にコピー

效果如下:

3 つのフレックス プロパティが要素に及ぼす影響について詳しく説明した記事

flex-shrink

flex-shrink 属性指定了 flex 元素的缩小值,默认值为 1; 它确定在分配 negative free space 时,flex 子元素相对于 flex 容器中其余 flex 子元素收缩的程度。默认值 1。用于减少盒子空间使盒子适应容器而不溢出(为了避免 border 干扰去掉边框)

我们给三个元素都设定宽度,并且总和大于主轴宽度;这里我们将元素的flex-shrink值设置为 0 (元素宽度不变,不需要吸收溢出的宽度),目的是观察一下反向自由空间。

.flex-shrink-wrapper {
  display: flex;
  div:nth-child(1) {
    width: 100px;
    background: gold;
  }
  div:nth-child(2) {
    width: 200px;
    background: tan;
  }
  div:nth-child(3) {
    width: 300px;
    background: gold;
  }
}
.zero {
  * {
    flex-shrink: 0;
  }
}
ログイン後にコピー

3 つのフレックス プロパティが要素に及ぼす影響について詳しく説明した記事

吸収幅の計算: 各フレックスシュリンクの値が #xn## であると仮定します。 x_n です。 #lnl_nLLL #xxnln #xx1l1 ... x n ln L \frac{x_n*l_n}{x_1*l_1 ... x_n*l_n}*L

  • 给子元素相同的 flex-shrink 值,这里以默认值 1 为例
.with-same-flex-shrink {
  * {
    flex-shrink: 1;
  }
}
ログイン後にコピー

3 つのフレックス プロパティが要素に及ぼす影響について詳しく説明した記事

この時の第一要素の吸収幅は 1* 1001100 1 200 1300100=16.67pxx\frac{1*100 } {1*100 1*200 1*300}*100 = 16.67px##10016.67=83.37pxx100-16.67=83.37px ##10

この時の第一要素の吸収幅は 12001100 1 200 1300100=33.33pxx\frac{1*200 } {1*100 1*200 1*300}*100 = 33.33px##20033.33=166.67px##200-33.33=166.67px ##20

这时第一个元素的吸收宽度为:13001100+1200+1300100=50px\frac{1*300}{1*100+1*200+1*300}*100 = 50px,最终元素宽度为 30050=250px300-50=250px

  • 给子元素不同的 flex-shrink 值
.with-different-flex-shrink {
  div:nth-child(1) {
    flex-shrink: 1;
  }
  div:nth-child(2) {
    flex-shrink: 2;
  }
  div:nth-child(3) {
    flex-shrink: 0;
  }
}
ログイン後にコピー

13 つのフレックス プロパティが要素に及ぼす影響について詳しく説明した記事

このとき、最初の要素の吸収幅は ##1∗ となります。 1001100 2 200100=20 pxxx\frac{1*100}{1*100 2*200}*100 = 20px ##10020=80pxx100-20=80px ##10

このとき、2番目の要素の吸収幅は、2となります。 ∗2001100 2200100=80 pxxx\frac{2*200}{1*100 2*200}*100 = 80px、最終的な要素の幅は ##200- 80=120pxx200-80=120ピクセル

##300pxxx300px 3

flex 的简写值

一般我们很少见上述属性单独使用,都是用flex这一个简写属性来表述元素的伸缩。

Flex 简写形式允许你把三个数值按这个顺序书写 flex-growflex-shrinkflex-basis。以下是常见的几种取值:

  • flex: initial 的扩展为 0 1 auto (不可放大、可缩小、大小与容器元素大小一致)
  • flex: auto 的扩展为 1 1 auto (可放大、可缩小、大小与容器元素大小一致)
  • flex: none 的扩展为 0 0 auto (不可放大、不可缩小、大小与容器元素大小一致)
  • flex: <positive-number></positive-number>的扩展为 <positive-number> 1 0</positive-number>

flex: <positive-number></positive-number>的应用:

两栏布局

.two-grid-wrapper {
  display: flex;
  margin-top: 20px;
  height: 200px;
  .left {
    width: 200px;
    background-color: gold;
  }
  .right {
    flex: 1;
    background-color: tan;
  }
}
ログイン後にコピー

效果如下:左侧宽度不变,右侧自适应

13 つのフレックス プロパティが要素に及ぼす影響について詳しく説明した記事

三栏布局

.three-grid-wrapper {
  display: flex;
  margin-top: 20px;
  height: 200px;
  .left {
    width: 200px;
    background-color: gold;
  }
  .right {
    width: 200px;
    background-color: gold;
  }
  .center {
    flex: 1;
    background-color: tan;
  }
}
ログイン後にコピー

效果如下:左右宽度不变,中间自适应

13 つのフレックス プロパティが要素に及ぼす影響について詳しく説明した記事

PS.flex 子元素没有 positive free space 就不会增长;没有 negative free space 就不会缩小。

结束语

学习八股文的时候发现自己对flex布局很不熟悉,基本概念都说不上来,只会无脑用,于是去学习,然后就诞生了这篇文章。欢迎指正。

(学习视频分享:web前端

以上が3 つのフレックス プロパティが要素に及ぼす影響について詳しく説明した記事の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

ブートストラップのサイズを変更する方法 ブートストラップのサイズを変更する方法 Apr 07, 2025 pm 03:18 PM

Bootstrapの要素のサイズを調整するには、次のものを含むDimensionクラスを使用できます。

ブートストラップに写真を挿入する方法 ブートストラップに写真を挿入する方法 Apr 07, 2025 pm 03:30 PM

ブートストラップに画像を挿入する方法はいくつかあります。HTMLIMGタグを使用して、画像を直接挿入します。ブートストラップ画像コンポーネントを使用すると、レスポンシブ画像とより多くのスタイルを提供できます。画像サイズを設定し、IMG-Fluidクラスを使用して画像を適応可能にします。 IMGボーダークラスを使用して、境界線を設定します。丸い角を設定し、IMGラウンドクラスを使用します。影を設定し、影のクラスを使用します。 CSSスタイルを使用して、画像をサイズ変更して配置します。背景画像を使用して、背景イメージCSSプロパティを使用します。

ブートストラップボタンの使用方法 ブートストラップボタンの使用方法 Apr 07, 2025 pm 03:09 PM

ブートストラップボタンの使用方法は?ブートストラップCSSを導入してボタン要素を作成し、ブートストラップボタンクラスを追加してボタンテキストを追加します

ブートストラップのフレームワークをセットアップする方法 ブートストラップのフレームワークをセットアップする方法 Apr 07, 2025 pm 03:27 PM

Bootstrapフレームワークをセットアップするには、次の手順に従う必要があります。1。CDNを介してブートストラップファイルを参照してください。 2。独自のサーバーでファイルをダウンロードしてホストします。 3。HTMLにブートストラップファイルを含めます。 4.必要に応じてSASS/LESSをコンパイルします。 5。カスタムファイルをインポートします(オプション)。セットアップが完了したら、Bootstrapのグリッドシステム、コンポーネント、スタイルを使用して、レスポンシブWebサイトとアプリケーションを作成できます。

ブートストラップにスプリットラインを書く方法 ブートストラップにスプリットラインを書く方法 Apr 07, 2025 pm 03:12 PM

ブートストラップスプリットラインを作成するには2つの方法があります。タグを使用して、水平方向のスプリットラインを作成します。 CSS Borderプロパティを使用して、カスタムスタイルのスプリットラインを作成します。

HTML、CSS、およびJavaScriptの役割:コアの責任 HTML、CSS、およびJavaScriptの役割:コアの責任 Apr 08, 2025 pm 07:05 PM

HTMLはWeb構造を定義し、CSSはスタイルとレイアウトを担当し、JavaScriptは動的な相互作用を提供します。 3人はWeb開発で職務を遂行し、共同でカラフルなWebサイトを構築します。

ブートストラップの日付を表示する方法 ブートストラップの日付を表示する方法 Apr 07, 2025 pm 03:03 PM

回答:ブートストラップの日付ピッカーコンポーネントを使用して、ページで日付を表示できます。手順:ブートストラップフレームワークを紹介します。 HTMLで日付セレクター入力ボックスを作成します。ブートストラップは、セレクターにスタイルを自動的に追加します。 JavaScriptを使用して、選択した日付を取得します。

VueでBootstrapの使用方法 VueでBootstrapの使用方法 Apr 07, 2025 pm 11:33 PM

vue.jsでBootstrapを使用すると、5つのステップに分かれています。ブートストラップをインストールします。 main.jsにブートストラップをインポートしますブートストラップコンポーネントをテンプレートで直接使用します。オプション:カスタムスタイル。オプション:プラグインを使用します。

See all articles