Spalteegenskapen i CSS er en forkortelse for row-gap
og column-gap
spesifiserer størrelsen på takrenner, som er mellomrommet mellom rader og kolonner i rutenett-, fleks- og flerkolonnelayout.
/* 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; )


Bruk glidebryteren i demoen nedenfor for å se gap
eiendommen i aksjon:
Syntaks
gap
aksepterer en eller to verdier:
- En enkelt verdi setter både
row-gap
ogcolumn-gap
med samme verdi. - Når to verdier brukes, setter den første den
row-gap
og den andre setter 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%; */ )
Spesifikasjonen for CSS Grid Layout Module definerte mellomrom mellom gitterspor ved bruk av grid-gap
eiendommen. gap
er ment å erstatte den slik at hull kan defineres i flere CSS-layoutmetoder, som flexbox, men grid-gap
må fortsatt brukes i tilfeller der en nettleser kan ha implementert, grid-gap
men ennå ikke har begynt å støtte den nyere gap
egenskapen.
Verdier
gap
aksepterer følgende verdier:
normal
: (Standard) Nettleseren vil spesifisere en brukt verdi på 1 em for flerkolonnelayout og 0px for alle andre layoutkontekster (dvs. rutenett og flex).: Enhver gyldig og ikke-negative CSS lengde, for eksempel
px
,em
,rem
og%
, blant andre.: Størrelsen på gapet som en ikke-negativ prosentverdi i forhold til dimensjonen til elementet. (Se nedenfor for detaljer.)
initial
: Bruker egenskapens standardinnstilling, som ernormal
.inherit
: Vedtar gapverdien til foreldrene.unset
: Fjerner strømmengap
fra elementet.
Prosentandeler i gapegenskaper
Når størrelsen på en container i gapdimensjonen er bestemt, gap
løser prosenter i forhold til størrelsen på containerens innholdsrute i alle layouttyper.


Med andre ord, når nettleseren vet størrelsen på beholderen, kan den beregne prosentverdien av gap
. For eksempel når containerens høyde er 100 px og den gap
er satt til 10%, vet nettleseren at 10% av 100 px er 10 px.
Men når nettleseren ikke vet størrelsen, vil den lure på "10% av hva?" I disse tilfellene gap
oppfører seg annerledes basert på layouttypen.
I et rutenettoppsett løses prosentandeler mot null for å bestemme egensinnsatte størrelsesbidrag, men løses i forhold til elementets innholdsboks når du legger ut innholdet i boksen, noe som betyr at det vil plassere mellomrom mellom elementene, men rommet påvirker ikke beholderens størrelse.
I denne demoen er beholderens høyde ikke bestemt. Se hva som skjer når du øker gap
størrelsen. Sett deretter gap
inn pikselenhetene og prøv igjen:
I et fleksibelt oppsett løses prosentandeler mot null i alle tilfeller, noe som betyr at hull ikke vil gjelde når størrelsen på beholderen ikke er kjent for nettleseren:
Bruke calc () -funksjonen med gap
Du kan bruke calc()
funksjonen til å spesifisere størrelsen på, gap
men på dette tidspunktet er det ingen støtte for det på Safari og iOS.
.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); )
Eksempler
Den gap
egenskapen er beregnet for bruk i nett, flex og multi-kolonne layout. La oss sjekke ut noen eksempler.
Rutenettoppsett
I den følgende demoen kan du se gap
brukt til å spesifisere row-gap
og column-gap
egenskapene på en rutenettbeholder, og definere takrennene henholdsvis rutenett og rutenettkolonner:
Fleksibel oppsett
Påføring av gap til hovedaksen til en flexcontainer indikerer avstanden mellom flex-elementene i en enkelt linje i flex-oppsettet.
Her column-gap
brukes i en radretning:
Her row-gap
brukes i en kolonneretning:
Påføring gap
på tverraksen til en flexcontainer indikerer avstand mellom flexlinjene i flexlayouten.
Her er row-gap
i radretning:
Her er column-gap
i en kolonne retning:
Flersøyleoppsett
column-gap
vises i flerkolonnelayout for å skape mellomrom mellom kolonneboksene, men merk at det ikke row-gap
har noen effekt siden vi bare jobber i kolonner. gap
kan fortsatt brukes i denne sammenhengen, men bare column-gap
viljen blir brukt.
Som du kan se i neste demo, selv om gap
eiendommen har verdien 2rem, skiller den bare elementene horisontalt i stedet for begge retninger siden vi jobber i kolonner:
Jo mer du vet…
Det er et par ting det er verdt å merke seg om å jobbe med gap
eiendommen.
Det er en fin måte å forhindre uønsket avstand på
Har du noen gang brukt marger for å skape avstand mellom elementene? Hvis vi ikke er forsiktige, kan vi ende opp med ekstra avstand før og etter varegruppen.
Løsning som vanligvis krever å legge til negative marginer eller ty til pseudovalgere for å fjerne margin fra bestemte elementer. Men det fine med å bruke gap
i mer moderne layoutmetoder er at du bare har plass mellom elementene. Den ekstra cruft i starten og slutten er aldri et problem!
Men hei, hvis du vil ha plass rundt varene mens du bruker gap
, legg padding
rundt beholderen slik:
.container ( display: flex; gap: 1rem; padding: 1rem; )
Rennestørrelse er ikke alltid lik gapverdien
Den gap
egenskapen er ikke den eneste som kan sette mellomrom mellom elementer. Marger, polstringer justify-content
og align-content
kan også øke rennestørrelsen og påvirke den faktiske gap
verdien.
I det følgende eksemplet setter vi en 1em, gap
men som du ser, er det mye mer mellomrom mellom elementene, forårsaket av bruk av distribuerte justeringer, som justify-content
og align-content
:
Nettleserstøtte
Funksjonsspørsmål er vanligvis en fin måte å sjekke om en nettleser støtter en bestemt egenskap, men i dette tilfellet, hvis du ser etter gap
eiendommen i flexbox, kan du få en falsk positiv fordi et funksjonsforespørsel ikke skiller mellom layoutmodus. Med andre ord kan det støttes i et fleksibelt oppsett som resulterer i et positivt resultat, men det støttes faktisk ikke hvis det brukes i et rutenettoppsett.
Rutenettoppsett
DVS | Kant | Firefox | Chrome | Safari | Opera |
---|---|---|---|---|---|
Nei | 16+ | 61+ | 66+ | 12+ | 53+ |
iOS Safari | Opera Mobile | Android-nettleser | Chrome for Android | Firefox for Android |
---|---|---|---|---|
12+ | Nei | 81+ | 84+ | 68+ |
Rutenettoppsett med kalk () verdier
DVS | Kant | Firefox | Chrome | Safari | Opera |
---|---|---|---|---|---|
Nei | 84+ | 79+ | 84+ | Nei | 69+ |
iOS Safari | Opera Mobile | Android-nettleser | Chrome for Android | Firefox for Android |
---|---|---|---|---|
Nei | Nei | 81+ | 84+ | 68+ |
Rutenettoppsett med prosentverdi
DVS | Kant | Firefox | Chrome | Safari | Opera |
---|---|---|---|---|---|
Nei | 84+ | 79+ | 84+ | Nei | 69+ |
iOS Safari | Opera Mobile | Android-nettleser | Chrome for Android | Firefox for Android |
---|---|---|---|---|
Nei | Nei | 81+ | 84+ | 68+ |
Fleksibel oppsett
Spesifikasjonen for bruk gap
med flexbox er for tiden i Working Draft-status.
Disse nettleserstøttedataene er fra Caniuse, som har flere detaljer. Et tall indikerer at nettleseren støtter funksjonen i den versjonen og oppover.
Desktop
Chrome | Firefox | DVS | Kant | Safari |
---|---|---|---|---|
84 | 63 | Nei | 84 | TP |
Mobil / nettbrett
Android Chrome | Android Firefox | Android | iOS Safari |
---|---|---|---|
88 | 85 | Nei | Nei |
Flersøyleoppsett
DVS | Kant | Firefox | Chrome | Safari | Opera |
---|---|---|---|---|---|
Nei | 84+ | 79+ | 84+ | Nei | 69+ |
iOS Safari | Opera Mobile | Android-nettleser | Chrome for Android | Firefox for Android |
---|---|---|---|---|
Nei | Nei | 81+ | 84+ | 68+ |
Mer informasjon
- CSS Box Alignment Module Nivå 3
- Chromium får Flexbox-gap (billett nr. 761904)
- WebKit CSS-funksjonsstatus
I slekt
- Rutenettoppsett
- Flexbox Layout
- Flersøyleoppsett