Snel! Wat is het Verschil Tussen Flexbox en Grid?

0
15

Laten we gaan schieten en proberen om deze vraag te beantwoorden met een snelle punten plaats van lange uiteenzettingen. Er zijn veel overeenkomsten tussen de flexbox en grid, te beginnen met het feit dat ze worden gebruikt voor de lay-out en veel krachtiger dan elke lay-out techniek die kwam voor hen. Zij kunnen strekken en krimpen van, ze kunnen center dingen, ze kan de volgorde van de dingen, ze kunnen uitlijnen dingen… Er zijn tal van lay-out situaties waarin je zou kunnen gebruiken, hetzij men te doen wat we moeten doen, en veel van de situaties waarbij de een is meer geschikt dan de andere. Laten we ons concentreren op de verschillen dan de overeenkomsten:

Flexbox optioneel kan de wrap. Als we toestaan dat een flex-container te wikkelen, zullen ze teruglopen naar beneden, naar een andere rij bij de flex-items vul een rij. Waar ze line-up op de volgende rij is onafhankelijk van wat happenned op de eerste rij, waardoor voor een metselwerk-achtige look.

Raster kan ook eventueel wrap (als we toestaan automatisch invullen) in de zin dat items kunnen vullen in een rij en verplaatsen naar de nieuwe rij (of auto in plaats van zichzelf), maar als ze dat doen, zullen ze vallen langs de horizontale lijnen op alle andere elementen doen.

Flexbox op de top, op het Rooster aan de onderkant

Je zou kunnen denken van flexbox als “één-dimensionaal.” Terwijl flexbox kunt rijen en kolommen in de zin dat het mogelijk maakt de elementen te wikkelen, er is geen manier om declaratief bepalen waar elementen eindigen sinds de elementen alleen maar druk over een interne as en wikkel vervolgens of niet wrap dienovereenkomstig. Ze doen zoals ze doen, als je wil, langs een één-dimensionale platte vlak en het is omwille van die ene dimensie die we kunnen eventueel dingen doen, zoals het uitlijnen van elementen langs een baseline — en dat is iets raster is niet te doen.

.ouder {
display: flex;
flex-flow: rij-wrap; /* OK elementen, ga zo ver als je kunt op één lijn, dan wikkel zoals je ziet past */
}

Je zou kunnen denken van raster als “twee-dimensionale in dat we (als we willen) verklaren het formaat van rijen en kolommen, en klik vervolgens expliciet plaats dingen in beide rijen en kolommen als we kiezen.

.ouder {
display: grid;
grid-template-kolommen: 3fr 1fr; /* Twee kolommen, een drie keer zo breed als de andere */
grid-template-rijen: 200px auto 100px; /* Drie kolommen, waarvan twee met een expliciete breedtes */
grid-template-gebieden:
“koptekst koptekst koptekst”
“centraal . sidebar”
“footer voettekst voettekst”;
}

/*
We kunnen nu expliciet items in de gedefinieerde rijen en kolommen.
*/
.kind-1 {
grid-omgeving: header;
}

.kind-2 {
grid-gebied: main;
}

.kind-3 {
grid-omgeving: zijbalk;
}

.kind-4 {
grid-omgeving: voettekst;
}

Flexbox op de top, op het Rooster aan de onderkant

Ik ben niet de grootste fan van de “1D” vs. “2D” differentiatie van raster versus flexbox, alleen omdat ik de meeste van mijn dag-tot-dag gebruik van raster “1D” en het is geweldig. Ik zou niet willen dat iemand te denken dat ze zijn te gebruiken flexbox en niet grid omdat rooster is enkel wanneer u het nodig 2D. Het is een sterk onderscheid al die 2D lay-out is mogelijk met grid al in de manieren is het niet in flexbox.

Raster wordt meestal gedefinieerd op het bovenliggende element. In flexbox, de meeste van de lay-out (buiten de basis) gebeuren op de kinderen.

/*
De flex kinderen het meeste werk doen
*/
.flexbox {
display: flex;
> div {
en:nth-child(1) { // logo
flex: 0 0 100px;
}
en:nth-child(2) { // zoek
flex: 1;
max-width: 500 px;
}
en:nth-child(3) { // avatar
flex: 0 0 50px;
margin-left: auto;
}
}
}

/*
Het raster ouder doet het meeste werk
*/
.raster {
display: grid;
grid-template-kolommen: 1fr auto minmax(100px, 1fr) 1fr;
grid-template-rijen: 100px herhaal(3, auto) 100px;
grid-gap: 10px;
}

Raster is het beter op elkaar overlappen. Aan de elementen elkaar overlappen in flexbox vereist bekeken traditionele dingen, zoals negatieve marges, transformeert, of absolute positionering in om uit te breken van de flex-gedrag. Met grid, kunnen we items op overlappende raster lijnen, of zelfs binnen de exact dezelfde grid cellen.

Flexbox op de top, op het Rooster aan de onderkant

Grid is steviger. Tijdens het buigen van de flexbox is soms de kracht van de organisatie, de manier waarop een flex-item formaat krijgt nogal ingewikkeld. Het is een combinatie van breedte, min-width, max-width, flex-basis, flex-groeien, en flex-krimpen, en niet te vergeten de inhoud van binnen en van dingen zoals wit-ruimte, evenals de andere items in dezelfde rij. Raster heeft interessante ruimte-innemend functies, zoals het fractionele eenheden, en de mogelijkheid om content op te breken rasters, hoewel, in het algemeen, wij zijn het opzetten van raster van lijnen en het plaatsen van artikelen in hen die plop recht op zijn plaats.

Flexbox kan duwen dingen weg. Het is een vrij unieke eigenschap van flexbox dat u kunt, bijvoorbeeld, zet margin-right: auto; op een element en, als er ruimte is, is dat element zal duwen alles zo ver weg als het kan gaan kan.

Hier zijn enkele van mijn favoriete tweets over het onderwerp:

flexbox ziet eruit als het doet wat u wilt
maar grid is meestal wat je wilt

— Oude Garde Rupert (@davatron5000) 25 januari 2019

Raster werkelijke kolommen en rijen. Inhoud line-up van de ene naar de andere, als je hier om vraagt. Flexbox niet. Niet alleen in de tweede dimensie (dat is het gemakkelijkst om over te praten), maar ook in de eerste dimensie. Flexbox is niet voor de meeste van de dingen die we gebruiken.

— Jen Simmons (@jensimmons) 26 januari 2019

Wat dacht je van dit:#Flexbox is voor de uitlijning. #CSSGrid is voor de lay-out.

Dit is bijna altijd hoe ik de wind met hen. Het stelt hen in staat om het behoud van hun relatie tot elkaar. Ook kunt u worden gebruikt voor haar kracht, ook al kan doen, het andere ding.

— Brian Haferkamp (@BrianHaferkamp) 25 Januari 2019

Als u begint met beperkende al uw flex-items met een breedte heeft, dan wordt vaker wel dan niet, zal het eenvoudiger worden om te gebruiken raster.

— Rachel Andrew (@rachelandrew) 25 januari 2019

Hier is nog een verschil, maar het is niet een favoriete manier om ze te omschrijven, gewoon leuk stom kennis:

flexbox duurt 2 gaat eindigen
raster 3

zo zou men kunnen zeggen, raster is traag en flexbox is snel lol

— Adam Argyle (@argyleink) 25 januari 2019

Voor mij Grid is er te grote full-lay-out..grids…meer controle over hoe het geheel van zijn/pagina komt samen, terwijl flexbox helpt me te positioneren en uitlijnen (of het nu in een raster of niet).

Voor mij is het over het doel.

— Mandy Michael (@Mandy_Kerr) 25 Januari 2019

Het onderscheid tussen de twee is vaak wazig, vooral nu dat we ook nog de `gap` voor flexbox. Raster is het meest geschikt voor een paar specifieke use cases (2D uiteraard, maar ook dingen als elkaar overlappende elementen), terwijl flexbox meestal schijnt in eenvoudiger yet common lay-out eisen.

— Benjamin De Haan (@bdc) 25 januari 2019

Gebruik raster wanneer u reeds de lay-out structuur in het achterhoofd, en flex-wanneer wilt u gewoon alles in te passen. Indeling eerste versus inhoud eerst.

— Beverly (@aszenitha) 25 januari 2019