Die Gap-Eigenschaft in CSS ist eine Abkürzung für row-gap
und column-gap
unter Angabe der Größe der Dachrinnen. Dies ist der Abstand zwischen Zeilen und Spalten in Raster-, Flex- und mehrspaltigen Layouts.
/* Grid layout */ .container ( display: grid; grid-template-columns: repeat(3, 1fr); grid-template-rows: 1fr 2fr 1fr; gap: 30px 20px; ) /* Flex layout */ .container ( display: flex; gap: 10%; ) /* Multi-column layout */ .container ( column-count: 5; gap: 20px; )


Verwenden Sie den Schieberegler in der Demo unten, um die gap
Eigenschaft in Aktion zu sehen:
Syntax
gap
akzeptiert einen oder zwei Werte:
- Ein einzelner Wert setzt beide
row-gap
undcolumn-gap
denselben Wert. - Wenn zwei Werte verwendet werden, setzt der erste den
row-gap
und der zweite dencolumn-gap
.
.container ( gap: 1rem; /* Is equivalent to: * row-gap: 1rem; * column-gap: 1rem */ gap: 10px 15%; /* Is equivalent to: * row-gap: 10px; * column-gap: 15%; */ )
Die Spezifikation für das CSS-Rasterlayoutmodul definierte den Abstand zwischen Rasterspuren mithilfe der grid-gap
Eigenschaft. gap
soll es ersetzen, damit Lücken in mehreren CSS-Layoutmethoden wie Flexbox definiert werden können, muss aber grid-gap
dennoch in Fällen verwendet werden, in denen ein Browser möglicherweise implementiert grid-gap
hat, die neuere gap
Eigenschaft jedoch noch nicht unterstützt .
Werte
gap
akzeptiert die folgenden Werte:
normal
: (Standard) Der Browser gibt einen verwendeten Wert von 1em für mehrspaltiges Layout und 0px für alle anderen Layoutkontexte (z. B. Raster und Flex) an.: Gültig und nicht negative CSS Länge, wie Jeder
px
,em
,rem
und%
unter anderem.: Die Größe der Lücke als nicht negativer Prozentwert relativ zur Dimension des Elements. (Einzelheiten siehe unten.)
initial
: Wendet die Standardeinstellung der Eigenschaft annormal
.inherit
: Übernimmt den Lückenwert des übergeordneten Elements.unset
: Entfernt den Stromgap
aus dem Element.
Prozentsätze der Lückeneigenschaften
Wenn die Größe eines Containers in der Lückendimension festgelegt ist, werden gap
Prozentsätze gegen die Größe des Inhaltsfelds des Containers in beliebigen Layouttypen aufgelöst.


Mit anderen Worten, wenn der Browser die Größe des Containers kennt, kann er den Prozentwert des Containers berechnen gap
. Wenn beispielsweise die Höhe des Containers 100 Pixel gap
beträgt und 10% festgelegt ist, weiß der Browser, dass 10% von 100 Pixel 10 Pixel sind.
Aber wenn der Browser die Größe nicht kennt, wird er sich fragen: "10% von was?" In diesen Fällen gap
verhält es sich je nach Layouttyp unterschiedlich.
In einem Rasterlayout werden Prozentsätze gegen Null aufgelöst, um die Beiträge zur intrinsischen Größe zu bestimmen. Sie werden jedoch gegen das Inhaltsfeld des Elements aufgelöst, wenn der Inhalt des Felds angeordnet wird. Dies bedeutet, dass zwischen den Elementen Platz bleibt, der Platz jedoch keinen Einfluss auf die Größe des Containers hat.
In dieser Demo ist die Höhe des Containers nicht eindeutig. Sehen Sie, was passiert, wenn Sie die gap
Größe erhöhen . gap
Stellen Sie dann die Einheiten in Pixel ein und versuchen Sie es erneut:
In einem Flex-Layout werden Prozentsätze in allen Fällen gegen Null aufgelöst. Dies bedeutet, dass Lücken nicht entstehen, wenn die Größe des Containers dem Browser nicht bekannt ist:
Verwenden der Funktion calc () mit Lücke
Sie können die calc()
Funktion verwenden, um die Größe des zu spezifizieren, gap
aber zum Zeitpunkt dieses Schreibens wird dies unter Safari und iOS nicht unterstützt .
.flex-layout ( display: flex; gap: calc(5vh + 5px) calc(5vw + 5px); )
.grid-layout ( display: grid; grid-template-columns: repeat(3, 1fr); gap: calc(5vmin + 5px); )
Beispiele
Die gap
Eigenschaft ist für die Verwendung in Raster-, Flex- und mehrspaltigen Layouts konzipiert. Schauen wir uns einige Beispiele an.
Gitterstruktur
In der folgenden Demo sehen Sie, wie Sie gap
die Eigenschaften row-gap
und column-gap
für einen Rastercontainer angeben und die Rinnen zwischen Rasterzeilen bzw. Rasterspalten definieren:
Flex Layout
Das Anwenden einer Lücke auf die Hauptachse eines Flex-Containers zeigt den Abstand zwischen Flex-Elementen in einer einzelnen Zeile des Flex-Layouts an.
Hier column-gap
wird in einer Zeilenrichtung verwendet:
Hier row-gap
wird in Spaltenrichtung verwendet:
Das Anwenden gap
auf die Querachse eines Flex-Containers zeigt den Abstand zwischen den Flex-Linien des Flex-Layouts an.
Hier ist row-gap
in einer Reihe Richtung:
Hier ist column-gap
in Spaltenrichtung:
Mehrspaltiges Layout
column-gap
wird in mehrspaltigen Layouts angezeigt, um Lücken zwischen Spaltenfeldern zu erstellen. Beachten Sie jedoch, dass dies row-gap
keine Auswirkungen hat, da wir nur in Spalten arbeiten. gap
kann in diesem Zusammenhang weiterhin verwendet werden, es wird jedoch nur das column-gap
angewendet.
Wie Sie in der nächsten Demo sehen können, gap
trennt die Eigenschaft , obwohl sie den Wert 2rem hat, Elemente nur horizontal anstatt in beide Richtungen, da wir in Spalten arbeiten:
Je mehr du weisst…
Es gibt ein paar bemerkenswerte Dinge bei der Arbeit mit der gap
Immobilie.
Dies ist ein guter Weg, um unerwünschte Abstände zu vermeiden
Haben Sie jemals Ränder verwendet, um Abstände zwischen Elementen zu erstellen? Wenn wir nicht aufpassen, können wir vor und nach der Gruppe von Elementen einen zusätzlichen Abstand haben.
Um dies zu lösen, müssen normalerweise negative Ränder hinzugefügt oder auf Pseudo-Selektoren zurückgegriffen werden, um Ränder von bestimmten Elementen zu entfernen. Das Schöne an gap
moderneren Layoutmethoden ist jedoch, dass zwischen den Elementen nur Platz ist. Die zusätzliche Kruft am Anfang und am Ende ist nie ein Problem!
Aber, hey, wenn Sie während der Verwendung Platz um die Gegenstände haben möchten gap
, stellen Sie padding
den Behälter wie folgt um:
.container ( display: flex; gap: 1rem; padding: 1rem; )
Die Dachrinnengröße entspricht nicht immer dem Spaltwert
Die gap
Eigenschaft ist nicht das einzige, was Platz zwischen Elementen setzen kann. Ränder, Polster justify-content
und align-content
können auch die Größe der Rinne erhöhen und den tatsächlichen gap
Wert beeinflussen.
Im folgenden Beispiel setzen wir ein 1em, gap
aber wie Sie sehen können, gibt es viel mehr Platz zwischen den Elementen, was durch die Verwendung verteilter Ausrichtungen wie justify-content
und verursacht wird align-content
:
Browser-Unterstützung
Feature-Abfragen sind normalerweise eine gute Möglichkeit, um zu überprüfen, ob ein Browser eine bestimmte Eigenschaft unterstützt. In diesem Fall erhalten gap
Sie jedoch möglicherweise ein falsches Positiv , wenn Sie in flexbox nach der Eigenschaft suchen, da eine Feature-Abfrage nicht zwischen Layout-Modi unterscheidet. Mit anderen Worten, es wird möglicherweise in einem Flex-Layout unterstützt, was zu einem positiven Ergebnis führt. Es wird jedoch nicht unterstützt, wenn es in einem Rasterlayout verwendet wird.
Gitterstruktur
IE | Kante | Feuerfuchs | Chrom | Safari | Oper |
---|---|---|---|---|---|
Nein | 16+ | 61+ | 66+ | 12+ | 53+ |
iOS Safari | Opera Mobile | Android Browser | Chrome für Android | Firefox für Android |
---|---|---|---|---|
12+ | Nein | 81+ | 84+ | 68+ |
Rasterlayout mit calc () -Werten
IE | Kante | Feuerfuchs | Chrom | Safari | Oper |
---|---|---|---|---|---|
Nein | 84+ | 79+ | 84+ | Nein | 69+ |
iOS Safari | Opera Mobile | Android Browser | Chrome für Android | Firefox für Android |
---|---|---|---|---|
Nein | Nein | 81+ | 84+ | 68+ |
Rasterlayout mit Prozentwert
IE | Kante | Feuerfuchs | Chrom | Safari | Oper |
---|---|---|---|---|---|
Nein | 84+ | 79+ | 84+ | Nein | 69+ |
iOS Safari | Opera Mobile | Android Browser | Chrome für Android | Firefox für Android |
---|---|---|---|---|
Nein | Nein | 81+ | 84+ | 68+ |
Flex Layout
Die Spezifikation für die Verwendung gap
mit Flexbox befindet sich derzeit im Status "Arbeitsentwurf".
Diese Browser-Unterstützungsdaten stammen von Caniuse, das detaillierter ist. Eine Zahl gibt an, dass der Browser die Funktion ab dieser Version unterstützt.
Desktop
Chrom | Feuerfuchs | IE | Kante | Safari |
---|---|---|---|---|
84 | 63 | Nein | 84 | TP |
Handy / Tablet
Android Chrome | Android Firefox | Android | iOS Safari |
---|---|---|---|
88 | 85 | Nein | Nein |
Mehrspaltiges Layout
IE | Kante | Feuerfuchs | Chrom | Safari | Oper |
---|---|---|---|---|---|
Nein | 84+ | 79+ | 84+ | Nein | 69+ |
iOS Safari | Opera Mobile | Android Browser | Chrome für Android | Firefox für Android |
---|---|---|---|---|
Nein | Nein | 81+ | 84+ | 68+ |
Mehr Informationen
- CSS Box Alignment Module Level 3
- Chrom landet Flexbox-Lücke (Ticket # 761904)
- WebKit CSS-Funktionsstatus
verbunden
- Gitterstruktur
- Flexbox-Layout
- Mehrspaltiges Layout