Flexbox är ett bra verktyg för att minska CSS-uppblåsningen, och har lite socker inbyggda för att hantera saker som källorder och anpassning. Men det erbjuder inte någon hjälp för att göra matematik som skapar kolumn- och gutterstorlekar. Så många experter upprepade gånger: Flexbox är trevligt, men det är inte ett rutnät.
Vi bör använda Flexbox, men vi borde inte kasta bort de grundläggande begreppen bakom nätsystem som drog oss ut ur "geocities era" av design:
Vi kan använda en av de många Flexbox-nätsystemen där ute, men i all ärlighet är stilarna bakom dessa mestadels samma som flottörbaserade nät. Författare lägger bara till display: Flex till behållaren, tillsammans med några hjälparklasser som obfuscate Flexbox-egenskaper (till exempel en klass som .Grid-vertikal-justerade-mitten är en obfuscation av Justeringsprodukter: Centrum ).
Den enda skillnaden är, nu är kolumner "böjda", vilket innebär att vi får det sockret jag nämnde tidigare. Men det här fortfarande inte löser de viktigaste problemen som nätet står inför idag: Gridsystem som fortfarande matas ut ett ton av CSS-uppblåsning, och galler är fortfarande tråkiga.
Gridförfattare distribuerar vanligtvis stora förpackningar av CSS som kan kompensera, källorder, justera och ändra storlek på någon godtycklig enhetsstorlek. De är beroende av gzip för att mildra några skador, men det får inte allt. Vad händer om du inte behöver de extra egenskaperna?
Om du antar det ramar du använder Erbjudanden Grid Mixins, kan den bästa lösningen vara att lära dem och komponera dina egna kolumner. Detta ger lite bloat, men begränsar dina galler till fraktioner och erbjuder dig inte mycket rörlighet mellan olika ramar.
Vidare till den andra frågan. Designers har blivit mentalt låsta för att göra alla sina beslut utifrån en viss kombination av lika stora kolumner. Som ett resultat börjar hela Internet att suddas ihop i en "stack på mobilen; 1/12 Kolumnkombinationer på något annat dystopi.
Flexbox introducerades böjning , som befriade oss lite. Nu kan vi ställa in storlekar som ser bra ut och fyller i det återstående utrymmet med ett utsträckt element, men gör gutters upp i konsekvent hela sidan? Är innehållsområden som anges med någon form av proportioner i åtanke, eller är vi tillbaka till bara vinge det?
Lösningen på båda dessa problem är inslagna i en funktion som heter Postcss-Ant. Postcss-plugins kan användas med en rad byggverktyg som webbhacka, gulp eller helt enkelt kommandoraden. Ant blandar sig smidigt i vanlig CSS (eller någon förprocessor) med en bedrägligt enkel API som maskerar dussintals sinne-boggling beräkna formler. Det kräver två mixin-liknande parametrar för att hämta en mängd rutnätstorlekar.
Ett exempel kan göra denna tydligare: Bredd: Storlekar (1/2) Få (1) återvända Calc (99,99% * 1/2 - (30px - 30px * 1/2)) . Låt oss bryta ner det här:
Vi får bredden för varje kolumn i ett två-kolonnät med en enda 30px-rännan mellan dem:
.grid {
Visa: Flex;
Flex-wrap: Wrap;
}
.half {
Bredd: Storlekar (1/2) Få (1); / * Returnerar Calc (99,99% * 1/2 - (30px - 30px * 1/2)) * /
marginal-höger: 30px; / * sätter en rännan på höger sida av varje kolumn * /
}
.half: nth-barn (2n + 2) {/ * börjar vid 2: a elementet och börjar räkna med 2s * /
marginal-höger: 0; / * Avlägsnar den sista rännan från varje rad * /
}
Detta ger redan designers kraften att använda dessa storlekar var de än passar, men låt oss dyka djupare.
Storlekar (100px 1/2) Få (1) återvända 100px . Enkelt nog, men varför skulle vi behöva använda myr för att återvända 100px ? Vi kommer till det på en sekund.
Storlekar (100px 1/2) Få (2) återvända Calc ((99,99% - (100px + (30px * 1))) * 1/2 - (30px - 30px * 1/2)) . Helig skit. myr är att ta reda på den totala storleken på fasta nummer och sedan återvända 1/2 av vad som helst kvar - på ett nth galler vänligt sätt.
Vi kan använda dessa beräkna formler för att skapa ett rutnät med a 100px kolumn och två 1/2 kolumner som så (jag kommer att utelämna .rutnät Stilar för att rädda träd, men var noga med att inkludera dem i din kod):
.Fixed-size {
Bredd: Storlekar (100px 1/2) Få (1); / * Returnerar 100px (jag vet att det verkar dumt men bära med mig lite längre) * /
marginal-höger: 30px;
}
.half {
Bredd: Storlekar (100px 1/2) Få (2); / * Returnerar Calc ((99,99% - (100px + (30px * 1))) * 1/2 - (30px - 30px * 1/2)) * /
marginal-höger: 30px;
}
.half: nth-barn (3N + 3) {
marginal-höger: 0;
}
Nu kan vi få några tidigare obehöriga storlekar, men det är inte super-flexibelt än och kan kräva mycket skrivning när de hanterar många storlekar.
Förprocessorer och postcss kommer inte alltid överens - speciellt när den anpassade syntaxen är inblandad. Lyckligtvis är Ant's API preprocessorvänlig. Vi kan använda en postcss-parser som postcss-scss med ett Precss-plugin, men det här tillvägagångssättet använder många oavslutade / oanvända postcss-plugins som dåligt mimic sass funktionalitet. Jag har hittat det bästa arbetsflödet är att:
Detta ger dig det bästa av preprocessorsyntax med alla postcss-plugins ditt hjärta önskar.
Nu för de coola sakerna. Förprocessorer har vanligtvis ett sätt att loop ett angivet antal gånger medan du tillhandahåller en iterator:
@for $ i från 1 till 3 {
Innehåll: $ i; // returnerar innehåll: 1; Innehåll: 2; Innehåll: 3;
}
Med lite kunskap om preprocessorer kan du börja använda myr på riktigt intressanta sätt ...
$ Storlekar: 100px 1/2 1/2;
$ gutter: 30px;
$ Längd: Längd ($ storlekar);
.
marginal-höger: $ gutter;
@ för $ jag från 1 till $ längd {
& amp;: nth-barn (# {$ längd} n + # {$ i}) {
Bredd: Storlekar ($ Storlekar) Få ($ i) Gutter ($ Gutter);
}
}
& amp;: nth-barn (# {$ längd} n + # {$ längd}) {
marginal-höger: 0;
}
}
Nu slår våra oregelbundna storlekskolonner till nya rader utan ytterligare markering. Gå vidare och tinker runt med den här koden. Prova varierande storlekar, takrännor och lägger till nya storlekar (som 100px Auto 100px).
Detta är ett ganska vanligt mönster med myr, så jag har lagt upp det i en fastighet som fungerar med Vanilla CSS:
.grid {
Generera-galler: Storlekar (100px 1/2 1/2); / * Du kan klara ytterligare alternativ, men plock () behövs inte längre. * /
}
nth galler är bra när du känner till storleken och antalet element som ska passeras, men ibland vill du skapa en behållare och bara dumpa några slumpmässigt medelstora element där inne. I dessa fall, negativ marginal Grids är din bästa satsning. Helt enkelt passera negativ marginal att myra som så:
.grid {
marginal: 0 -15px;
}
.
Bredd: Storlekar (1/3) Få (1) rutnät (negativmarginal);
Marginal: 0 15px;
}
Dessa exempel var bara en liten glimt på alla de coola saker som postcss-myran kan göra. Det har ett mer valfria parametrar och massor av beskrivande felhantering, men Ant sanna makt är du.
"Dumb" -verktyg som helt enkelt returnerar lite data är alltid de bästa verktygen, eftersom de lägger strömmen tillbaka i utvecklarens händer. Det är vad Postcss-Ant var utformad för att göra. Om du är fascinerad, gå till corysimmons.github.io/postcss-ant För vissa ansiktsmältande demos och söta dokument.
Denna artikel publicerades ursprungligen i utgåva 286 av Net Magazine, Köp det här.
Relaterade artiklar:
(Bildkredit: Getty Images) Om dina glasögon fortsätter att dimma upp när du har en ansiktsmask, är du inte ensam...
Hur man ritar en ros - Hur man ritar en rosa video - Hur man ritar en ros: nybörjare - Hur man ri..
Att lära sig hur man gör en fotokollage i Photoshop kommer att vara till nytta i många olika situationer. Individuella bilder fånga enstaka stunder i tid, men åberopa en collage och du k..
(Bildkredit: Negativt utrymme på peklar) Medan reagerar är ett kraftfullt JavaScript-bibliotek, inkluderar det inte..
De flesta ser användargränssnitt dagligen, oavsett om det är inne i en mobil app eller på en webbplats, så det är viktigt a..
År 1999 byggde jag min första webbplats med Web Studio 1.0. Web Studio var ett grafiskt användargränssnitt. Det var möjligt att skapa en ny landningssida och dra och släp..
I den här handledningen tar vi den mekaniska ritningen Toy Etch en skiss som en inspiration och försök att genomföra dessa fu..