Vlastnosť gap v CSS je skratkou pre row-gap
a column-gap
so špecifikáciou veľkosti odkvapov, čo je priestor medzi riadkami a stĺpcami v rámci rozloženia mriežky, flexa a viacerých stĺpcov.
/* 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; )


Pomocou jazdca v ukážke nižšie uvidíte gap
vlastnosť v akcii:
Syntax
gap
akceptuje jednu alebo dve hodnoty:
- Jedna hodnota nastavuje obe
row-gap
acolumn-gap
rovnakú hodnotu. - Ak sa použijú dve hodnoty, prvá nastaví hodnotu
row-gap
a druhá nastaví hodnotucolumn-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%; */ )
Špecifikácia modulu rozloženia mriežky CSS definovala priestor medzi stopami mriežky pomocou grid-gap
vlastnosti. gap
je určený na nahradenie, aby bolo možné definovať medzery vo viacerých metódach rozloženia CSS, ako je flexbox, ale je grid-gap
stále potrebné ich používať v prípadoch, keď môže byť implementovaný prehľadávač, ktorý grid-gap
však ešte musí začať podporovať novšiu gap
vlastnosť.
Hodnoty
gap
akceptuje nasledujúce hodnoty:
normal
: (Predvolené) Prehliadač určí použitú hodnotu 1em pre rozloženie s viacerými stĺpcami a 0px pre všetky ostatné kontexty rozloženia (tj. Mriežka a ohyb).: Ľubovoľný platný a nezáporné dĺžka CSS, ako je napríklad
px
,em
,rem
a%
, medzi inými.: Veľkosť medzery ako nezáporná percentuálna hodnota vzhľadom na rozmer prvku. (Podrobnosti nájdete nižšie.)
initial
: Použije predvolené nastavenie vlastnosti, ktoré jenormal
.inherit
: Prijme hodnotu medzery rodiča.unset
: Odstráni prúdgap
z prvku.
Percentá vo vlastnostiach medzery
Keď je veľkosť kontajnera v dimenzii medzery definitívna, gap
vyrieši sa percentuálna veľkosť oproti veľkosti poľa obsahu kontajnera v akýchkoľvek typoch rozloženia.


Inými slovami, keď prehliadač pozná veľkosť kontajnera, môže vypočítať percentuálnu hodnotu súboru gap
. Napríklad keď je výška kontajnera 100 pixelov a gap
je nastavená na 10%, prehliadač vie, že 10% zo 100 pixelov je 10 pixlov.
Ale keď prehliadač nevie veľkosť, bude sa diviť: „10% z čoho?“ V týchto prípadoch sa gap
správa odlišne na základe typu rozloženia.
V rozložení mriežky sa percentuálne hodnoty určujú proti nule pri určovaní príspevkov vnútornej veľkosti, ale pri rozložení obsahu poľa sa rozlišujú proti poli obsahu prvku, čo znamená, že medzi položky bude vložený priestor, ale medzera neovplyvní veľkosť kontajnera.
V tejto ukážke nie je výška kontajnera určitá. Zistite, čo sa stane, keď zväčšíte gap
veľkosť. Potom nastavte gap
jednotky pixelov a skúste to znova:
Pri flexibilnom rozložení sa percentuálne hodnoty vo všetkých prípadoch vyrovnávajú s nulou, čo znamená, že medzery sa neuplatnia, keď prehliadač nevie veľkosť kontajnera:
Použitie funkcie calc () s medzerou
Pomocou calc()
funkcie môžete určiť veľkosť, gap
ale v čase písania tohto článku nie je v Safari a iOS podporovaná .
.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); )
Príklady
Táto gap
nehnuteľnosť je navrhnutá na použitie v mriežkových, flexi a viacstĺpcových rozloženiach. Pozrime sa na niekoľko príkladov.
Rozloženie mriežky
V nasledujúcej ukážke môžete vidieť, gap
ako sa používa na zadanie vlastností row-gap
a column-gap
vlastností kontajnera mriežky, definujúcich odkvapy medzi riadkami mriežky a stĺpcami mriežky:
Flex rozloženie
Aplikácia medzery na hlavnú os kontajnera flex znamená rozostup medzi položkami flex v jednom riadku rozloženia flex.
Tu sa column-gap
používa v smere riadku:
Tu je row-gap
použitý v smere stĺpcov:
Aplikácia gap
na priečnu os kontajnera flex znamená rozostup medzi líniami flexa rozloženia flexa.
Tu je row-gap
v riadku:
Tu column-gap
v smere stĺpca:
Rozloženie viacerých stĺpcov
column-gap
sa zobrazuje v rozloženiach s viacerými stĺpcami na vytváranie medzier medzi políčkami stĺpcov, ale upozorňujeme, že to row-gap
nemá žiadny vplyv, pretože pracujeme iba v stĺpcoch. gap
sa v tejto súvislosti stále dá použiť, použije sa však iba column-gap
.
Ako môžete vidieť v nasledujúcej ukážke, hoci má gap
vlastnosť hodnotu 2rem, oddeľuje položky iba vodorovne namiesto oboch smerov, pretože pracujeme v stĺpcoch:
Čím viac vieš…
Pri práci s gap
nehnuteľnosťou stojí za zmienku niekoľko vecí .
Je to pekný spôsob, ako zabrániť nežiaducim rozstupom
Už ste niekedy použili okraje na vytvorenie medzery medzi prvkami? Ak nebudeme opatrní, môžeme pred a za skupinou položiek skončiť extra medzerami.
Riešenie tohto problému zvyčajne vyžaduje pridanie negatívnych okrajov alebo použitie pseudo-selektorov na odstránenie okrajov z konkrétnych položiek. Príjemné na použití gap
v modernejších metódach rozloženia je však to, že medzi položkami máte iba priestor. Extra cruft na začiatku a na konci nie je nikdy problémom!
Ale hej, ak chcete mať pri používaní priestor okolo predmetov gap
, položte padding
kontajner takto:
.container ( display: flex; gap: 1rem; padding: 1rem; )
Veľkosť žľabu sa nie vždy rovná hodnote medzery
Táto gap
vlastnosť nie je jedinou vecou, ktorá môže umiestniť priestor medzi položkami. Okraje, výplne justify-content
a align-content
môžu tiež zväčšiť veľkosť odkvapu a ovplyvniť skutočnú gap
hodnotu.
V nasledujúcom príklade budeme nastavenia 1em gap
, ale ako vidíte, tam je oveľa viac priestoru medzi položkami, spôsobené použitím distribuovaných zarovnanie, ako je justify-content
a align-content
:
Podpora prehliadača
Dotazy na funkcie sú zvyčajne pekným spôsobom, ako skontrolovať, či prehliadač podporuje konkrétnu vlastnosť, ale v takom prípade, ak skontrolujete gap
vlastnosť vo flexboxe, môžete dostať falošne pozitívny výsledok, pretože dotaz na funkciu nebude rozlišovať medzi režimami rozloženia. Inými slovami, môže to byť podporované vo flexibilnom rozložení, ktoré vedie k pozitívnemu výsledku, ale v skutočnosti to nie je podporované, ak sa používa v rozložení mriežky.
Rozloženie mriežky
IE | Hrana | Firefox | Chrome | Safari | Opera |
---|---|---|---|---|---|
Nie | 16+ | 61+ | 66+ | 12+ | 53+ |
iOS Safari | Opera Mobile | Prehliadač Android | Chrome pre Android | Firefox pre Android |
---|---|---|---|---|
12+ | Nie | 81+ | 84+ | 68+ |
Rozloženie mriežky s hodnotami calc ()
IE | Hrana | Firefox | Chrome | Safari | Opera |
---|---|---|---|---|---|
Nie | 84+ | 79+ | 84+ | Nie | 69+ |
iOS Safari | Opera Mobile | Prehliadač Android | Chrome pre Android | Firefox pre Android |
---|---|---|---|---|
Nie | Nie | 81+ | 84+ | 68+ |
Rozloženie mriežky s percentuálnou hodnotou
IE | Hrana | Firefox | Chrome | Safari | Opera |
---|---|---|---|---|---|
Nie | 84+ | 79+ | 84+ | Nie | 69+ |
iOS Safari | Opera Mobile | Prehliadač Android | Chrome pre Android | Firefox pre Android |
---|---|---|---|---|
Nie | Nie | 81+ | 84+ | 68+ |
Flex rozloženie
Špecifikácia používania gap
s flexboxom je momentálne v stave Pracovný koncept.
Údaje o podpore tohto prehľadávača sú od spoločnosti Caniuse, ktorá obsahuje viac podrobností. Číslo označuje, že prehliadač podporuje túto funkciu v danej verzii alebo vyššej.
Desktop
Chrome | Firefox | IE | Hrana | Safari |
---|---|---|---|---|
84 | 63 | Nie | 84 | TP |
Mobil / tablet
Android Chrome | Android Firefox | Android | iOS Safari |
---|---|---|---|
88 | 85 | Nie | Nie |
Rozloženie viacerých stĺpcov
IE | Hrana | Firefox | Chrome | Safari | Opera |
---|---|---|---|---|---|
Nie | 84+ | 79+ | 84+ | Nie | 69+ |
iOS Safari | Opera Mobile | Prehliadač Android | Chrome pre Android | Firefox pre Android |
---|---|---|---|---|
Nie | Nie | 81+ | 84+ | 68+ |
Viac informácií
- Modul zarovnania CSS boxu úrovne 3
- Chromu pristane medzera Flexboxu (lístok # 761904)
- Stav funkcie WebKit CSS
Súvisiace
- Rozloženie mriežky
- Rozloženie Flexboxu
- Rozloženie viacerých stĺpcov