Inhaltsverzeichnis
flex-basis
正负自由空间
flex-grow
Positiver und negativer freier Speicherplatz
flex-shrink
flex 的简写值
flex: 的应用:
两栏布局
三栏布局
结束语
Heim Web-Frontend CSS-Tutorial Ein Artikel, in dem die Auswirkungen von drei Flex-Eigenschaften auf Elemente ausführlich erläutert werden

Ein Artikel, in dem die Auswirkungen von drei Flex-Eigenschaften auf Elemente ausführlich erläutert werden

Aug 30, 2022 pm 07:50 PM
css flex

Ein Artikel, in dem die Auswirkungen von drei Flex-Eigenschaften auf Elemente ausführlich erläutert werden

Bei der Entwicklung verwenden wir oft das Flex-Attribut, um auf die untergeordneten Elemente der flexiblen Box zu wirken, zum Beispiel: flex:1 oder flex: 1 1 auto , dann Wie steuert dieses Attribut das Verhalten von Elementen? Was genau bedeutet flex:1? Lassen Sie sich von diesem Artikel umfassend über die Flex-Eigenschaft informieren! [Empfohlenes Lernen: CSS-Video-Tutorial]flex:1或者flex: 1 1 auto,那么这个属性到底控制了元素怎么的行为呢?flex:1又究竟是什么含义呢?让这篇文章带你彻底了解 flex 属性吧!【推荐学习:css视频教程

首先我们需要了解,flex 是三个属性 flex-growflex-shrinkflex-basis的简写,可以使用一个、两个、或者三个值指定 flex 属性。具体语法可以参考MDN-flex

接下来我们逐一拆解这三个属性对元素的影响

flex-basis

flex-basis 定义了空间分配发生之前初始化 flex 子元素的尺寸,属性默认值 auto; flex 子元素未伸张和收缩之前,它的大小是多少。

如果 flex-basis 设置为 auto , 浏览器会先检查 flex 子元素的主尺寸是否设置了 flex 子元素的初始值。

比如说你已经给你的 flex 子元素设置了 150px 的宽,则 150px 就是这个 flex 子元素的 flex-basis;如果没有设置,则 auto 会解析为其内容的大小。这个例子中,给第一个元素设置宽度150px,第二、三个元素不设置宽度。

:first-child {
  width: 150px;
}
Nach dem Login kopieren

效果如下:

Ein Artikel, in dem die Auswirkungen von drei Flex-Eigenschaften auf Elemente ausführlich erläutert werden

如果你想 flexbox 完全忽略 flex 子元素的尺寸就设置 flex-basis 为 0。这样就算元素一设置了宽度,它最终的宽度也是内容宽度。

Ein Artikel, in dem die Auswirkungen von drei Flex-Eigenschaften auf Elemente ausführlich erläutert werden

正负自由空间

在介绍剩下两个属性前先看两个概念 positive free space 正向自由空间和 negative free space反向自由空间:

  • 正向自由空间

    比如说,现在有 500px 宽的 flex 容器,flex-direction 属性值为 row, 三个 100px 宽的 flex 子元素, 那么没有被填充的 200px 的 就是正向自由空间(positive free space)。

Ein Artikel, in dem die Auswirkungen von drei Flex-Eigenschaften auf Elemente ausführlich erläutert werden

  • 反向自由空间

    当子元素的宽度总和大于容器宽度时,溢出的尺寸100px就是反向自由空间。

Ein Artikel, in dem die Auswirkungen von drei Flex-Eigenschaften auf Elemente ausführlich erläutert werden

那么用什么属性分配正负自由空间呢?

flex-grow

  • flex-grow 默认值 0
  • Zuerst müssen wir verstehen, flexibel sein ist Die Abkürzungen der drei Attribute flex-grow, flex-shrink und flex-basis können mit eins, zwei oder drei angegeben werden Werte. Flex-Eigenschaft. Informationen zur spezifischen Syntax finden Sie unter MDN-flex

Als nächstes wollen wir die Auswirkungen dieser drei Attribute auf das Element einzeln aufschlüsseln

flex-basis

flex-basis definiert die Größe des initialisierten untergeordneten Flex-Elements, bevor die Speicherplatzzuweisung erfolgt. Das Attribut Standardwert ist automatisch, die Größe des untergeordneten Flex-Elements, bevor es gedehnt wird schrumpft. Ein Artikel, in dem die Auswirkungen von drei Flex-Eigenschaften auf Elemente ausführlich erläutert werden

Wenn „flex-basis“ auf „auto“ eingestellt ist, prüft der Browser zunächst, ob die Hauptgröße des untergeordneten Flex-Elements auf den Anfangswert des untergeordneten Flex-Elements eingestellt ist. 🎜🎜Wenn Sie beispielsweise eine Breite von 150 Pixel für Ihr untergeordnetes Flex-Element festgelegt haben, ist 150 Pixel die Flex-Basis dieses untergeordneten Flex-Elements. Wenn dies nicht festgelegt ist, wird es automatisch auf die Größe seines Inhalts aufgelöst. In diesem Beispiel ist die Breite des ersten Elements auf 150 Pixel festgelegt und das zweite und dritte Element haben keine Breite. 🎜
.flex-grow-father {
  width: 500px;
  div:nth-child(1) {
    width: 50px;
  }
  div:nth-child(2) {
    width: 100px;
  }
  div:nth-child(3) {
    width: 150px;
  }
}
Nach dem Login kopieren
🎜Der Effekt ist wie folgt: 🎜🎜 Ein Artikel, in dem die Auswirkungen von drei Flex-Eigenschaften auf Elemente ausführlich erläutert werden 🎜🎜Wenn Sie möchten, dass Flexbox die Größe von untergeordneten Flex-Elementen vollständig ignoriert, setzen Sie Flex-Basis auf 0. Selbst wenn für Element 1 eine Breite festgelegt ist, ist seine endgültige Breite auf diese Weise die Inhaltsbreite. 🎜🎜Ein Artikel, in dem die Auswirkungen von drei Flex-Eigenschaften auf Elemente ausführlich erläutert werden🎜

Positiver und negativer freier Speicherplatz

🎜Schauen wir uns zwei Konzepte an, bevor wir die verbleibenden zwei Attribute einführen positiver freier Speicherplatz In Richtung frei Leerzeichen und negativer freier Speicherplatz Freier Speicherplatz umkehren:🎜
  • 🎜Freier Speicherplatz weiterleiten🎜🎜Zum Beispiel gibt es jetzt einen 500 Pixel breiten Flex-Container und der Wert des Flex-Direction-Attributs ist Zeile , drei 100 Pixel breite untergeordnete Flex-Elemente, dann sind die 200 Pixel, die nicht gefüllt sind, der positive freie Platz. 🎜🎜🎜🎜Ein Artikel, in dem die Auswirkungen von drei Flex-Eigenschaften auf Elemente ausführlich erläutert werden🎜
    • 🎜Umgekehrter freier Speicherplatz🎜🎜Wenn die Summe der Breiten der untergeordneten Elemente größer als die Breite des Containers ist, ist die Überlaufgröße von 100 Pixel der umgekehrte freie Speicherplatz. 🎜🎜🎜🎜Ein Artikel, in dem die Auswirkungen von drei Flex-Eigenschaften auf Elemente ausführlich erläutert werden🎜 🎜Welche Attribute werden also verwendet, um positiven und negativen Freiraum zuzuweisen? 🎜

      flex-grow

      • flex-grow Standardwert 0: Wenn es einer positiven Ganzzahl zugewiesen wird, wächst die Größe des Flex-Elements entlang der Hauptachse basierend auf der Flex-Basis und nimmt den verfügbaren Platz ein. Flex-Grow teilt den Wachstumsraum proportional zu. 🎜🎜🎜Ausgangszustand: Wir legen die Breite für alle drei Elemente fest und die Summe ist nicht größer als die Breite der Hauptachse🎜<div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">.with-same-flex-grow {   * {     flex-grow: 1;   } }</pre><div class="contentsignin">Nach dem Login kopieren</div></div><div class="contentsignin">Nach dem Login kopieren</div></div>🎜🎜🎜<p>增加的宽度计算方法:假设元素的 <code>flex-grow 值为 x,正向自由空间宽度为l,则每个元素增加的宽度=xx的总和l\frac{x}{x的总和}*l,元素最终宽度 = 元素初始宽度+增加的宽度元素初始宽度 + 增加的宽度

        • 相同比例增长:当给每个子元素的都设定相同的 flex-grow 值,每个元素就会增长相同的宽度
        .with-same-flex-grow {
          * {
            flex-grow: 1;
          }
        }
        Nach dem Login kopieren
        Nach dem Login kopieren

        效果如下:

        Ein Artikel, in dem die Auswirkungen von drei Flex-Eigenschaften auf Elemente ausführlich erläutert werden

        Berechnung der Breite des ersten Elements in diesem Beispiel 2 00+ 50 =116,67pxfrac{1}{1+1+1}*200 + 50 = 116,67px 1+1+

        第二个元素宽度宽度计算 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;
          }
        }
        Nach dem Login kopieren

        效果如下:

        Ein Artikel, in dem die Auswirkungen von drei Flex-Eigenschaften auf Elemente ausführlich erläutert werden

        Berechnung der Breite des ersten Elements in diesem Beispiel 2 00+ 50 =150pxfrac{2}{2+1+1}*200 + 50 = 150px 2+1+

        第二个元素宽度的计算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;
          }
        }
        Nach dem Login kopieren

        效果如下:

        Ein Artikel, in dem die Auswirkungen von drei Flex-Eigenschaften auf Elemente ausführlich erläutert werden

        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;
          }
        }
        Nach dem Login kopieren

        Ein Artikel, in dem die Auswirkungen von drei Flex-Eigenschaften auf Elemente ausführlich erläutert werden

        Berechnung der absorbierten Breite: Gehen Sie davon aus, dass der Wert jeder Flex-Schrumpfung xnx_n, die anfängliche Breite des Elements beträgt lnl_n , der umgekehrte freie Speicherplatz ist Dann beträgt die von jedem Element absorbierte Breite: l nx1l1+. +x nl nLfrac{x_n*l_n}{x_1*l_1+...+x_n*l_n}*L 1

        • 给子元素相同的 flex-shrink 值,这里以默认值 1 为例
        .with-same-flex-shrink {
          * {
            flex-shrink: 1;
          }
        }
        Nach dem Login kopieren

        Ein Artikel, in dem die Auswirkungen von drei Flex-Eigenschaften auf Elemente ausführlich erläutert werden

        Zu diesem Zeitpunkt beträgt die Absorptionsbreite des ersten Elements: 11001100 + 1200 x frac{1*100}{1*100+1 *200 +1*300}*100 = 16,67 Pixel 100+ 1 200+1383 .3 7px

        Zu diesem Zeitpunkt beträgt die Absorptionsbreite des ersten Elements: 12001100 + 1200 x frac{1*200}{1*100+1 *200 +1*300}*100 = 33,33 Pixel 100+ 1 200+13 . 33.33=16 6

        这时第一个元素的吸收宽度为: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;
          }
        }
        Nach dem Login kopieren

        1Ein Artikel, in dem die Auswirkungen von drei Flex-Eigenschaften auf Elemente ausführlich erläutert werden

        Zu diesem Zeitpunkt beträgt die Absorptionsbreite des ersten Elements: 11001100 + 2 200100 = . 20px 10020=80px100-20=80px 1 00

        Zu diesem Zeitpunkt beträgt die Absorptionsbreite des zweiten Elements: 22001100 + 2 200100 = . 80px 20080=120px200-80=120px 2 00 0

        0

        px

        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;
          }
        }
        Nach dem Login kopieren

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

        1Ein Artikel, in dem die Auswirkungen von drei Flex-Eigenschaften auf Elemente ausführlich erläutert werden

        三栏布局

        .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;
          }
        }
        Nach dem Login kopieren

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

        1Ein Artikel, in dem die Auswirkungen von drei Flex-Eigenschaften auf Elemente ausführlich erläutert werden

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

        结束语

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

        (学习视频分享:web前端

Das obige ist der detaillierte Inhalt vonEin Artikel, in dem die Auswirkungen von drei Flex-Eigenschaften auf Elemente ausführlich erläutert werden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So fügen Sie Bilder auf Bootstrap ein So fügen Sie Bilder auf Bootstrap ein Apr 07, 2025 pm 03:30 PM

Es gibt verschiedene Möglichkeiten, Bilder in Bootstrap einzufügen: Bilder direkt mit dem HTML -IMG -Tag einfügen. Mit der Bootstrap -Bildkomponente können Sie reaktionsschnelle Bilder und weitere Stile bereitstellen. Legen Sie die Bildgröße fest und verwenden Sie die IMG-Fluid-Klasse, um das Bild anpassungsfähig zu machen. Stellen Sie den Rand mit der img-beliebten Klasse ein. Stellen Sie die abgerundeten Ecken ein und verwenden Sie die IMG-Rund-Klasse. Setzen Sie den Schatten, verwenden Sie die Schattenklasse. Größen Sie die Größe und positionieren Sie das Bild im CSS -Stil. Verwenden Sie mit dem Hintergrundbild die CSS-Eigenschaft im Hintergrund.

So ändern Sie Bootstrap So ändern Sie Bootstrap Apr 07, 2025 pm 03:18 PM

Um die Größe der Elemente in Bootstrap anzupassen, können Sie die Dimensionsklasse verwenden, einschließlich: Einstellbreite:.

Die Rollen von HTML, CSS und JavaScript: Kernverantwortung Die Rollen von HTML, CSS und JavaScript: Kernverantwortung Apr 08, 2025 pm 07:05 PM

HTML definiert die Webstruktur, CSS ist für Stil und Layout verantwortlich, und JavaScript ergibt eine dynamische Interaktion. Die drei erfüllen ihre Aufgaben in der Webentwicklung und erstellen gemeinsam eine farbenfrohe Website.

So schreiben Sie geteilte Zeilen auf Bootstrap So schreiben Sie geteilte Zeilen auf Bootstrap Apr 07, 2025 pm 03:12 PM

Es gibt zwei Möglichkeiten, eine Bootstrap -Split -Zeile zu erstellen: Verwenden des Tags, das eine horizontale Split -Linie erstellt. Verwenden Sie die CSS -Border -Eigenschaft, um benutzerdefinierte Style Split -Linien zu erstellen.

So richten Sie das Framework für Bootstrap ein So richten Sie das Framework für Bootstrap ein Apr 07, 2025 pm 03:27 PM

Um das Bootstrap -Framework einzurichten, müssen Sie die folgenden Schritte befolgen: 1. Verweisen Sie die Bootstrap -Datei über CDN; 2. Laden Sie die Datei auf Ihrem eigenen Server herunter und hosten Sie sie. 3.. Fügen Sie die Bootstrap -Datei in HTML hinzu; 4. Kompilieren Sie Sass/weniger bei Bedarf; 5. Importieren Sie eine benutzerdefinierte Datei (optional). Sobald die Einrichtung abgeschlossen ist, können Sie die Grid -Systeme, -Komponenten und -stile von Bootstrap verwenden, um reaktionsschnelle Websites und Anwendungen zu erstellen.

So verwenden Sie die Bootstrap -Taste So verwenden Sie die Bootstrap -Taste Apr 07, 2025 pm 03:09 PM

Wie benutze ich die Bootstrap -Taste? Führen Sie Bootstrap -CSS ein, um Schaltflächenelemente zu erstellen, und fügen Sie die Schaltfläche "Bootstrap" hinzu, um Schaltflächentext hinzuzufügen

So sehen Sie das Datum der Bootstrap So sehen Sie das Datum der Bootstrap Apr 07, 2025 pm 03:03 PM

ANTWORT: Sie können die Datumsauswahlkomponente von Bootstrap verwenden, um Daten auf der Seite anzuzeigen. Schritte: Stellen Sie das Bootstrap -Framework ein. Erstellen Sie ein Eingangsfeld für Datumsauswahl in HTML. Bootstrap fügt dem Selektor automatisch Stile hinzu. Verwenden Sie JavaScript, um das ausgewählte Datum zu erhalten.

So verwenden Sie Bootstrap in Vue So verwenden Sie Bootstrap in Vue Apr 07, 2025 pm 11:33 PM

Die Verwendung von Bootstrap in Vue.js ist in fünf Schritte unterteilt: Startstrap installieren. Bootstrap in main.js. Verwenden Sie die Bootstrap -Komponente direkt in der Vorlage. Optional: benutzerdefinierter Stil. Optional: Verwenden Sie Plug-Ins.

See all articles