CSS flex-basis Eigenschaft
Die CSS-Eigenschaft flex-basis legt die anfängliche Hauptgröße eines Flex-Elements fest. Ohne Angabe beträgt ihr Standardwert auto.
Die Eigenschaft flex-basis legt die anfängliche Hauptgröße eines Flex-Elements fest — die Größe, die es erhält, bevor freier Platz durch flex-grow verteilt oder durch flex-shrink reduziert wird. Wenn diese Eigenschaft nicht angegeben wird, lautet ihr Ausgangswert auto.
Die Eigenschaft flex-basis gehört zu den CSS3-Eigenschaften und wirkt sich nur auf die Kindelemente eines Flex-Containers aus (ein Element mit display: flex oder display: inline-flex). Wenn das Elternelement kein Flex-Container ist, hat flex-basis keine Wirkung.
Warum flex-basis verwenden?
In einem Flexbox-Layout wird die Größe eines Elements in zwei Schritten berechnet:
- Der Browser liest den
flex-basis-Wert des Elements, um eine Ausgangsgröße entlang der Hauptachse festzulegen. - Anschließend vergrößert oder verkleinert er jedes Element ausgehend von dieser Ausgangsgröße, um den Container zu füllen (oder hineinzupassen), gemäß
flex-growundflex-shrink.
Verwenden Sie flex-basis, wenn Sie die ideale Größe eines Elements festlegen, aber trotzdem flexibel bleiben möchten. Zum Beispiel bedeutet flex-basis: 200px „Strebe 200px an und wachse/schrumpfe von dort", während width: 200px eine feste Größe ist, die Flexbox weniger bereit ist zu überschreiben.
flex-basis vs. width
Wenn flex-basis auf eine Länge oder einen Prozentwert gesetzt wird, hat es Vorrang vor width (oder height, wenn flex-direction auf column steht) bei der Bestimmung der anfänglichen Hauptgröße des Elements. Der wesentliche Unterschied: flex-basis gilt immer entlang der Hauptachse und folgt daher flex-direction. Bei flex-direction: row steuert es die Breite; bei flex-direction: column steuert es die Höhe. Ein einfaches width steuert immer die horizontale Größe, unabhängig von der Richtung.
Bei flex-basis: auto fällt das Element auf seinen width-/height-Wert zurück (oder auf die Inhaltsgröße, wenn diese nicht gesetzt sind).
Hinweis: Die Kurzschreibweise
flexsetztflex-basiszusammen mitflex-growundflex-shrink. Wenn Sieflexverwenden, hat dies Vorrang vor einer eigenständigenflex-basis-Deklaration — setzen Sieflex-basisdaher nachflex, oder verwenden Sie direkt die Kurzschreibweise, um Überraschungen zu vermeiden.
| Ausgangswert | auto |
|---|---|
| Gilt für | Flex-Elemente, einschließlich Inline-Pseudo-Elemente. |
| Vererbbar | Nein. |
| Animierbar | Ja. Elemente sind animierbar. |
| Version | CSS3 |
| DOM-Syntax | object.style.flexBasis = "100px"; |
Syntax
Syntax der CSS-Eigenschaft flex-basis
flex-basis: length | percentage | auto | initial | inherit | min-content | max-content | fit-content | content;Grundlegendes Beispiel
Beispiel der CSS-Eigenschaft flex-basis
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
.box {
width: 300px;
height: 80px;
border: 1px solid #666;
display: flex;
}
.box div {
flex-grow: 0;
flex-shrink: 0;
flex-basis: 40px;
}
.box div:nth-of-type(2) {
flex-basis: 140px;
}
</style>
</head>
<body>
<h2>Flex-basis property example</h2>
<div class="box">
<div style="background-color: #eeeeee;">40px</div>
<div style="background-color: #1c87c9;">140px</div>
<div style="background-color: #8ebf42;">40px</div>
<div style="background-color: #cccccc;">40px</div>
<div style="background-color: #666666;">40px</div>
</div>
</body>
</html>Ergebnis
Beispiel mit allen Werten
Beispiel der flex-basis-Eigenschaft mit allen Werten:
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
.box {
height: 70px;
display: flex;
}
.box div {
flex-grow: 0;
flex-shrink: 0;
flex-basis: 60px;
padding: 15px;
}
.box div:first-child {
background-color: #40c3da;
}
.box div:nth-of-type(2) {
flex-basis: 40%;
background-color: lightgreen;
}
.box div:nth-of-type(3) {
flex-basis: auto;
background-color: yellow;
}
.box div:nth-of-type(4) {
flex-basis: initial;
background-color: orange;
}
.box div:nth-of-type(5) {
flex-basis: inherit;
background-color: pink;
}
</style>
</head>
<body>
<h2>Flex-basis property example</h2>
<div class="box">
<div>
number 60px
</div>
<div>
percentage 40%
</div>
<div>
auto
</div>
<div>
initial
</div>
<div>
inherit
</div>
</div>
</body>
</html>Beispiel mit Pixelwerten
Beispiel der flex-basis-Eigenschaft mit Angaben in Pixeln:
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
.box {
width: 460px;
height: 70px;
display: flex;
}
.box div {
flex-grow: 0;
flex-shrink: 0;
flex-basis: 70px;
padding: 15px;
}
.box div:first-child {
background-color: #40c3da;
}
.box div:nth-of-type(2) {
flex-basis: 100px;
background-color: lightgreen;
}
.box div:nth-of-type(3) {
background-color: #1c87c9;
}
.box div:nth-of-type(4) {
flex-basis: 150px;
background-color: orange;
}
.box div:nth-of-type(5) {
background-color: #8ebf42;
}
</style>
</head>
<body>
<h2>Flex-basis property example</h2>
<div class="box">
<div>
70px
</div>
<div>
100px
</div>
<div>
70px
</div>
<div>
150px
</div>
<div>
70px
</div>
</div>
</body>
</html>Werte
| Wert | Beschreibung | Ausprobieren |
|---|---|---|
| length | percentage | Eine absolute Länge (px, em, rem) oder ein Prozentwert der Hauptgröße des Flex-Containers. Negative Werte sind ungültig. | Ausprobieren » |
| auto | Der Standardwert. Das Element verwendet seine eigene width/height (oder die Inhaltsgröße, wenn diese nicht gesetzt sind) als Basis. | Ausprobieren » |
| initial | Setzt die Eigenschaft auf ihren Standardwert (auto) zurück. | Ausprobieren » |
| inherit | Erbt den Wert vom Elternelement. | |
| min-content | Bemisst das Element auf seine kleinstmögliche Inhaltsbreite (das längste nicht trennbare Wort oder Element). | Ausprobieren » |
| max-content | Bemisst das Element auf seine maximale Inhaltsbreite ohne Zeilenumbruch. | Ausprobieren » |
| fit-content | Begrenzt die Größe zwischen min-content und max-content, ähnlich der Funktion fit-content(). | Ausprobieren » |
| content | Bemisst das Element anhand seines Inhalts und ignoriert dabei festgelegte width/height-Werte. Begrenzte Browserunterstützung. | Ausprobieren » |
Häufige Fallstricke
flex-basishat außerhalb eines Flex-Containers keine Wirkung. Das Elternelement mussdisplay: flexoderdisplay: inline-flexhaben.- Ein
flex-basis-Wert von0(oder0%) kombiniert mitflex-grow: 1verteilt den Platz proportional nur nach dem Wachstumsfaktor, ohne Berücksichtigung der Inhaltsgröße — so funktionieren viele „gleiche Spalten"-Layouts. - Prozentwerte werden relativ zur Hauptgröße des Containers aufgelöst, nicht relativ zum viewport. Wenn der Container auf der Hauptachse keine definierte Größe hat, verhält sich ein prozentuales
flex-basismöglicherweise wieauto. - Die Kurzschreibweise
flexüberschreibtflex-basis. Das Schreiben vonflex: 1setzt die Basis auf0%zurück, was eine frühereflex-basis-Deklaration überschreiben kann.
Verwandte Eigenschaften
flex— die Kurzschreibweise fürflex-grow,flex-shrinkundflex-basis.flex-grow— wie stark ein Element über seine Basis hinaus wächst.flex-shrink— wie stark ein Element unter seine Basis schrumpft.- Der ultimative Leitfaden zu Flexbox — das vollständige Flexbox-Modell an einem Ort.