Flexbox er et godt værktøj til at reducere CSS Bloat, og har noget sukker indbygget for at håndtere ting som kildeordre og justering. Men det giver ikke nogen hjælp til at lave de matematik, der skaber kolonne og rende størrelser. Så mange eksperter gentagne gange angiver: Flexbox er rart, men det er ikke et gittersystem.
Vi bør bruge Flexbox, men vi bør ikke smide de grundlæggende begreber bag gittersystemer, der trak os ud af 'Geocities Era' af design:
Vi kan bruge et af de mange Flexbox-gittersystemer derude, men i al ærlighed er stilarterne bag disse for det meste de samme som flydebaserede net. Forfattere Tilføj kun display: Flex til beholderen, sammen med nogle hjælperklasser, der obfuscate flexbox egenskaber (for eksempel en klasse som .Grid-lodret-justeret-midten er en forvirring af Juster-genstande: Center ).
Den eneste forskel er, nu kolonner er 'bøjede', hvilket betyder, at vi får det sukker, jeg nævnte tidligere. Men det løser stadig ikke de vigtigste problemer, som grids står over for i dag: Gittersystemer udsender stadig et ton af CSS Bloat, og GRID'er er stadig kedelige.
Gitterforfattere distribuerer typisk store pakker af CSS, der kan kompensere, kildeordre, justere og ændre størrelse i henhold til en vilkårlig enhedsstørrelse. De stoler på Gzip for at afbøde nogle af skaden, men det får det ikke hele. Hvad hvis du ikke har brug for disse ekstra funktioner?
Forudsat at de rammer, du i øjeblikket bruger, tilbyder Gittermixiner, kan den bedste løsning være at lære dem og komponere dine egne kolonner. Dette producerer lidt bloat, men begrænser dine net til fraktioner og giver dig ikke en masse mobilitet mellem forskellige rammer.
Videre til det andet problem. Designere er blevet mentalt låst ind for at gøre alle deres beslutninger baseret på en vis kombination af lige store kolonner. Som følge heraf begynder hele internettet at sløre sammen i en 'stack på mobil; 1/12 kolonnekombinationer på noget andet 'Dystopia.
Flexbox introduceret Flex-Grow. , som befriede os lidt. Nu kan vi indstille størrelser, der ser godt ud og udfylder det resterende rum med et strakt element, men gutters line op konsekvent på hele siden? Er indholdsområder lagt ud med nogen form for proportioner i tankerne, eller er vi tilbage til bare at vinge det?
Løsningen på begge disse problemer er indpakket i en funktion kaldet Postcss-myr. Postcss plugins kan bruges med en række bygningsværktøjer som Webpack, Gulp eller blot kommandolinjen. myr blander problemfrit i almindelige CSS (eller enhver preprocessor) med en bedragerisk simpel API, der masker snesevis af mind-Boggling CALC. formler. Det kræver to mix-lignende parametre for at hente en overflod af gittervenlige størrelser.
Et eksempel kan gøre dette klarere: Bredde: Størrelser (1/2) Få (1) vender tilbage Calc (99,99% * 1/2 - (30px - 30px * 1/2)) . Lad os bryde dette ned:
Vi får bredden for hver kolonne i et tokolonne gitter med en enkelt 30px rende mellem dem:
.Grid {
Display: Flex;
Flex-wrap: Wrap;
}
.halvt {
Bredde: Størrelser (1/2) Få (1); / * Returnerer Calc (99,99% * 1/2 - (30PX - 30PX * 1/2)) * /
Margin-højre: 30px; / * sætter en rende på højre side af hver kolonne * /
}
.half: nth-barn (2n + 2) {/ * starter ved 2. element og begynder at tælle med 2s * /
Margin-højre: 0; / * fjerner den sidste renden fra hver række * /
}
Dette giver allerede designere magten til at bruge disse størrelser, uanset hvor de ser passende, men lad os dykke dybere.
Størrelser (100px 1/2) Få (1) vender tilbage 100px . Simpelt nok, men hvorfor skulle vi bruge myr til at vende tilbage 100px ? Vi kommer til det om et sekund.
Størrelser (100px 1/2) Få (2) vender tilbage Calc ((99,99% - (100px + (30px * 1))) * 1/2 - (30px - 30px * 1/2)) . Holy Crap. myr finder ud af den samlede størrelse af faste tal, og derefter returnere 1/2 af det, der er tilbage - på en nth gridvenlig måde.
Vi kan bruge disse CALC. formler for at skabe et gitter med a 100px kolonne og to. 1/2 kolonner som det (jeg vil udelade .Grid. Stil for at gemme træer, men sørg for at inkludere dem i din kode):
.Fixed-size {
Bredde: Størrelser (100px 1/2) Få (1); / * returnerer 100px (jeg ved, det virker dumt, men bære med mig for lidt længere) * /
Margin-højre: 30px;
}
.halvt {
Bredde: Størrelser (100px 1/2) Få (2); / * Returnerer Calc ((99,99% - (100px + (30px * 1))) * 1/2 - (30px - 30px * 1/2)) * /
Margin-højre: 30px;
}
.half: nth-barn (3n + 3) {
Margin-højre: 0;
}
Nu kan vi få nogle tidligere uopnåelige størrelser, men det er ikke super-fleksibelt endnu og kan kræve en masse skrivning, når vi beskæftiger sig med mange størrelser.
Preprocessors og postcss ikke altid komme sammen - især når brugerdefineret syntaks er involveret. Heldigvis er Ant's API præprocessor-venlig. Vi kan bruge en postcss-parser som PostCSS-SCS'er med en PREXS-plugin, men denne tilgang bruger en masse ufærdige / ubegrænsede postcss-plugins, der dårligt efterligner SAS-funktionaliteten. Jeg har fundet den bedste workflow er at:
Dette giver dig det bedste af Preprocessor Syntax med alle postcss plugins dit hjerte ønsker.
Nu for de seje ting. Preprocessors har typisk en måde at slette et bestemt antal gange, mens du leverer en iterator:
@ for $ i fra 1 til 3 {
Indhold: $ I; // returnerer indhold: 1; Indhold: 2; Indhold: 3;
}
Med lidt viden om præprocessorer kan du begynde at bruge myr på virkelig interessante måder ...
$ størrelser: 100px 1/2 1/2;
$ Gutter: 30px;
$ Længde: længde ($ størrelser);
.Column {
Margin-højre: $ Gutter;
@for $ jeg fra 1 til $ længde {
& amp;: nth-barn (# {$ length} n + # {$ i}) {
Bredde: Størrelser ($ Størrelser) Få ($ I) Gutter ($ Gutter);
}
}
& amp;: nth-barn (# {$ length} n + # {$ length}) {
Margin-højre: 0;
}
}
Nu vikler vores uregelmæssigt størrelse kolonner til nye rækker uden yderligere markup. Gå videre og tinker rundt med denne kode. Prøv varierende størrelser, gutters og tilføjer nye størrelser (som 100px Auto 100px).
Dette er et temmelig almindeligt mønster med myr, så jeg har indpakket det op i en ejendom, der også fungerer sammen med Vanilla CSS:
.Grid {
generere-grid: Størrelser (100px 1/2 1/2); / * Du kan bestå ekstra muligheder, men pluk () er ikke længere nødvendigt. * /
}
nth grids er store, når du kender størrelsen og antallet af elementer, der skal bestås, men nogle gange vil du gerne oprette en beholder og bare dumpe nogle tilfældigt størrelse elementer derinde. I disse tilfælde, negativ-margin. Gitter er din bedste indsats. Simpelthen pass. negativ-margin. til myr som sådan:
.Grid {
Margin: 0 -15px;
}
.Column {
Bredde: Størrelser (1/3) Få (1) Gitter (negativmargin);
Margin: 0 15px;
}
Disse eksempler var bare et lille glimt på alle de seje ting, som postcss-myr kan gøre. Det har et par mere valgfrie parametre og masser af beskrivende fejlhåndtering, men myrens sande magt er dig.
'Dumb' værktøjer, der blot returnerer en smule data, er altid de bedste værktøjer, da de sætter strømmen tilbage i udviklerens hænder. Det er det, som Postcss-myr var designet til at gøre. Hvis du er fascineret, skal du gå til corysimmons.github.io/postcss-ant. for nogle ansigtsmeltende demoer og søde dokumenter.
Denne artikel blev oprindeligt offentliggjort i udstedelse 286 af Net Magazine, Køb det her.
Relaterede artikler:
Når du lærer at tegne en nakke og skuldre, kan det ofte være udfordrende at vise mængderne i vores arbejde, da vi er vant til at se folk front-on. Men tegning af en anatomisk korrekt nakk..
(Billedkredit: fremtiden) Da Apple først lancerede sin smartwatch til offentligheden, følte alle, at den utrolige h..
Billede: Getty billeder Forudsætninger er dårlige for erhvervslivet. De er dårlige, fordi vi af naturen har mening..
CSS skal passere gennem en relativt kompleks pipeline, ligesom HTML og JavaScript. Browseren skal downloade filerne fra serveren ..
Du måske kendt Hvordan man tegner folk , men skaber et digitalt portræt, der ikke kan skelnes fra et fotografi -..
Perspektivet er alt i design. Hvis noget du har trukket, har et perfekt perspektiv, vil det hjælpe dit arbejde med at se mere re..
Tiden var en webside baggrund var et lille fliser billede - og ofte hæslige, angreb hver besøgendes øjenkugler. I dag danner b..
3D-udskrivning er blevet enormt populært. Hvis du vil begynde at udskrive din egen 3D Art. , Der er et par ting at kigge efter for at få de bedste resultater. Her vil jeg vis..