PostCSS Deep Dive Diverse Goodies

Under hela serien har vi gått igenom många olika kategorier av PostCSS-plugins, som erbjuder alla möjliga fördelar för din CSS-utveckling. Men några av de allra bästa PostCSS-pluginsna passar inte in i kategorierna som vi har täckt i våra tidigare serier.

I denna handledning kommer du att lära dig om fem av dessa "diverse godisar". Vi täcker:

  • Genererar nät med förlust
  • Se hur dina mönster ser ut att färgblinda människor med postcss-colorblind
  • Konvertera px-enheter till rem med postcss-pxtorem
  • Automatisk generering av en RTL-version av ditt stylesheet med rtlcss
  • Automatisk generering av en stilguide med postcss-stil-guide

Låt oss börja!

Ställ in ditt projekt

Som alltid är det första du behöver göra med att ställa in ditt projekt för att använda antingen Gulp eller Grunt, beroende på vad du föredrar. Om du inte redan föredrar en eller annan, rekommenderar jag att du använder Gulp eftersom du behöver mindre kod för att uppnå samma ändamål, så du borde hitta det lite enklare att arbeta med.

Du kan läsa om hur du konfigurerar Gulp eller Grunt-projekt för PostCSS i de tidigare handledningarna

  • PostCSS Quickstart Guide: Gulp Setup eller
  • PostCSS Quickstart Guide: Grunt Setup

respektive.

Om du inte vill installera ditt projekt manuellt från början, kan du ladda ner källfilerna som bifogas denna handledning och extrahera antingen det angivna Gulp eller Grunt-startprojektet i en tom projektmapp. Sedan kör kommandot med en terminal eller kommandotolk som pekas på mappen npm installera.

Installera insticksprogram

Nu måste vi installera fem plugins i ditt projekt. Oavsett om du använder Gulp eller Grunt, kör följande kommando i din projektmapp för att installera plugins som vi ska använda:

npm installera borttappad postcss-colorblind postcss-pxtorem postcss-style-guide -save-dev

Förutom dessa fem använder vi också rtlcss, men eftersom det fungerar lite annorlunda än andra PostCSS-plugins använder vi det via motsvarande Gulp eller Grunt plugins.

Om du använder Gulp, installera gulp-rtlcss med kommandot:

npm installera gulp-rtlcss gulp-rename -save-dev

Och om du använder Grunt installerar du grunt-rtlcss med kommandot:

npm installera grunt-rtlcss - save-dev

Nu är vi redo att ladda plugin till ditt projekt.

Ladda pluggar via Gulp

Om du använder Gulp, lägg till dessa variabler under de variabler som redan finns i filen:

var förlorad = kräver ("förlorad"); var colorblind = kräver ('postcss-colorblind'); var pxtorem = kräver ("postcss-pxtorem"); var styleGuide = kräver ("postcss-style-guide"); var rtlcss = kräver ("gulp-rtlcss"); var rename = kräver ('gulp-rename');

Lägg nu till var och en av de nya variabla namnen i din processorer array:

 var processorer = [förlorade, // colorblind, pxtorem, styleGuide];

Notera: färgblind Kommenteras, vilket kommer att förklaras senare.

Gör ett snabbt test att allt fungerar genom att köra kommandot gulp css Kontrollera sedan att en ny "style.css" -fil har dykt upp i projektets "dest" -mapp.

Ladda pluggar via Grunt

Om du använder Grunt, uppdatera processorer objekt som är nestat under alternativ objekt till följande:

 processorer: [kräver ("förlorad") (), // kräver ('postcss-colorblind') (), kräver ('postcss-pxtorem') (), kräver ('postcss-style-guide')

Notera: kräver ( 'postcss-färgblind') (), Kommenteras, vilket kommer att förklaras senare.

Gör ett snabbt test att allt fungerar genom att köra kommandot grunt postcss Kontrollera sedan att en ny "style.css" -fil har dykt upp i projektets "dest" -mapp.

Generera galler med förlust

Lost är ett helt PostCSS-baserat nätgenereringssystem av Cory Simmons, skaparen av Jeet, ett annat mycket framgångsrikt rutsystem som är skrivet i Stylus. Den har en lång lista med imponerande funktioner, men dess implementering är väldigt rakt framåt.

Börja med att skapa en fil med namnet "index.html" i din "dest" -mapp. Vi lägger upp en grundläggande rutnätlayout i den här filen. Lägg till följande kod för den:

      

Huvudområde

Sidebar

Lägg sedan till den här koden till din "src / style.css" för att ställa in en grundläggande två kolumnradslayout, med en huvudområdeskolumn och sidofältet:

@lost gutter 1.618rem; .row lost-center: 75rem;  .main lost-column: 3/5;  .sidebar förlorad kolumn: 2/5; 

Låt oss bryta ner vad vi har gjort här.

Först använder vi a @förlorat at-rule för att ställa in vårt eget värde för en av Losts alternativ: rännstorlek. Som standard är rännor (luckor mellan kolumner) 30px. Jag gillar alltid att använda 1.618rem för avstånd i mönster, så jag har bestämt det för att vara den nya rännstorleken med linjen @lost gutter 1.618rem;.

Därefter har vi setup a .rad klass som vi sätter ihop runt våra kolumner. Detta kräver bara att du använder fastigheten förlorade centrum och specificerar en bredd för raden. Pluggen tar hand om att ställa in en maximal bredd på klassen, centrera den och rensa den.

Därefter, i .huvud och .sidofältet klasser, vi har skapat våra kolumner.

Förlorade begränsar dig inte till att arbeta med ett förutbestämt antal kolumner som tolv eller sexton; Du kan ha ett antal kolumner du vill ha. Kolumnbredder bestäms genom att använda egenskapen förlorade-kolonn och ange en bråkdel som värdet. I vår kod .huvud klassen använder en inställning av 3/5 så det tar upp 3 av 5 kolumner, och .sidofältet användningar 2/5 så det tar 2 av 5 kolumner.

Kompilera din fil och i din "dest / style.css" -fil bör du nu se den här koden:

.rad * zoom: 1; maxbredd: 75rem; marginal-vänster: auto; marginal-höger: auto;  .row: före innehåll: "; display: tabell; .row: efter innehåll:"; display: bord; klara: båda;  .main bredd: calc (99,99% * 3/5 - (1,618rem - 1,618rem * 3/5));  .main: nth-child (n) float: left; marginal-höger: 1.618rem; rensa: ingen;  .main: sista barn marginal-höger: 0;  .main: nth-child (5n) margin-right: 0;  .main: nth-child (5n + 1) clear: left;  .sidebar bredd: calc (99,99% * 2/5 - (1,618rem - 1,618rem * 2/5));  .sidebar: nth-child (n) float: left; marginal-höger: 1.618rem; rensa: ingen;  .sidebar: sista barn marginal-höger: 0;  .sidebar: nth-child (5n) margin-right: 0;  .sidebar: nth-child (5n + 1) clear: left; 

Och när du tittar i en webbläsare bör din "dest / index.html" -fil nu presentera en layout med två kolumner så här:

Det är lite svårt att se exakt vad som händer med vårt rutnät här, vilket är orsaken till att Lost också ger lost-utility: redigera; att markera ditt rutnät för enkel visualisering under utveckling.

Lägg till det här i varje klass som vi hittills har skapat:

.rad lost-center: 75rem; lost-utility: redigera;  .main lost-column: 3/5; lost-utility: redigera;  .sidebar förlorad kolumn: 2/5; lost-utility: redigera; 

Nu när du kompilerar och uppdaterar din sida bör du se ditt rutnät markerat så här:

Låt oss göra allt lite tydligare för att se igen med lite extra styling (vilket också hjälper oss med senare avsnitt i denna handledning). Uppdatera din "src / style.css" -fil till följande, lägga till ett par extrafunktioner som vaddering i kolumnerna och några bakgrunds- och textfärger:

@lost gutter 1.618rem; * box-size: border-box;  html, kropp höjd: 100%; marginal: 0; font-family: "Open Sans";  html vaddering: 0;  kropp vaddering: 1.618rem; bakgrund: # 16a085;  .row lost-center: 75rem;  .main, .sidebar padding: 1.618rem; minhöjd: 500px;  .main lost-column: 3/5; bakgrund: vit; färg: # 232323;  .sidebar förlorad kolumn: 2/5; bakgrund: # 2c3e50; färg vit; 

Kompilera din CSS igen och ladda om din sida och du borde nu ha en klassisk två kolumnlayout så här:

Vad vi har täckt här skimmar bara ytan på vad som kan göras med Lost, så var noga med att läsa om alla övriga funktioner på: https://github.com/corysimmons/lost

Se genom Colorblindens ögon

Färgblindhet påverkar en större andel av webbplatsens besökare än du kanske inser. Till exempel är den vanligaste typen av färgblindhet deuteranomali, vilket medför 6% av alla män och 0,4% av kvinnorna. För att uttrycka det i perspektiv är det uppskattat att IE9 och IE10 kombineras används av cirka 4% av all webtrafik. Man kan föreslå att om vi kan lägga betydande tid i att stödja specifika webbläsare, kan vi lägga lika stor tid åt att stödja människor.

Brian Holts postcss-colorblind-plugin hjälper omedelbart att bedöma hur tillgänglig en design är för personer med olika former av färgblindhet, eftersom det låter dig själv se hur dina färgscheman skulle se ut om du hade samma visuella uppfattning. Det låter dig skapa versioner av ditt stilark som simulerar åtta olika slags färgblindhet. Låt oss se hur du kan använda den.

Lägg till några extra färger

Först lägger vi till några extra färger i vår design så långt att vi lättare kan se effekten av de olika stylesheets som vi ska generera. Vi lägger till fem "Metro Style" -plattor, genom att lägga till följande HTML under den rad som vi redan har i vår "Dest / Index.htm" -fil:

Detta är en kakel
Detta är en kakel
Detta är en kakel
Detta är en kakel
Detta är en kakel

Lägg nu till följande kod i din "src / style.css" -fil för att stile dessa plattor med fem olika färger:

.rad margin-bottom: 1.618rem;  .tile lost-column: 1/5; vaddering: 3,75rem 1,618rem; text-align: center; fontstorlek: 1,25rem; färg vit;  .tile: nth-of-type (1) bakgrund: # f39c12;  .tile: nth-of-type (2) bakgrund: # c0392b;  .tile: nth-of-type (3) bakgrund: # 8e44ad;  .tile: nth-of-type (4) bakgrund: # 2980b9;  .tile: nth-of-type (5) bakgrund: # d35400; 

Efter sammanställning borde du se din fil ser så här ut i en webbläsare:

Generera Colorblind Simulations

Du kanske har märkt det när vi installerar vår processorer array tidigare posten för färgblind kommenterades. Det beror på att så snart plugin är aktiv kommer det att applicera färgblindimulering i ditt stilark så att du inte vill slå på den tills du är redo att använda den. Okänt det i processorer array nu.

För att simulera någon av de åtta typerna av färgblindhet, skicka alternativet metod för det här pluginet i din Gulpfile eller Gruntfile, tillsammans med namnet på den typ av färgblindhet du vill kolla på.

Till exempel, för att simulera deuteranomaly, ställ det här alternativet:

/ * Gulpfile * / colorblind (metod: 'deuteranomaly'), / * Gruntfile * / require ('postcss-colorblind') (metod: 'deuteranomaly')

Nu kompilera ditt stilark och uppdatera din sida och du kommer att se din design som en person med deuteranomaly gör:

Du märker att färgerna ser väldigt annorlunda ut. En person med deuteranomali ser röd och grön annorlunda, så medan du märker att blåen är nästan densamma, är röda och gröna ganska annorlunda.

För att visualisera protanopi, sätt detta alternativ:

/ * Gulpfile * / colorblind (metod: 'protanopia'), / * Gruntfile * / kräver ('postcss-colorblind') (metod: 'protanopia')

Kompilera ditt stilark och nu ser du detta:

En person med protanopi ser i huvudsak inte röd alls och ser grön på ett annat sätt. Du märker igen att den starka bluesen inte är alltför kraftig, men lila har blivit rentblå och de återstående färgerna har blivit variationer av samma gulaktiga bruna färger. Det har blivit mycket svårt att skilja de röda och två orangefärgade plattorna från varandra.

Denna förmåga att generera alla olika typer av colorblind-simuleringar är otroligt inblick och hjälper oss att se till att de färgscheman vi har valt inte litar på uppfattningen av en viss nyans och därigenom är tillgänglig för alla.

Läs mer om postcss-colorblind på: https://github.com/btholt/postcss-colorblind

Konvertera px-enheter till rem

I nästan alla mönster finns det väldigt bra skäl till rem enhet för att spela en framträdande roll. Men det är svårt att tänka på rem enheter, och mycket lättare att tänka på px enheter när du skapar layouter. Postcss-pxtorem-plugin hjälper till med denna speedbump, genom att automatiskt konvertera px enheter till rem enheter.

Pluggen använder en vit lista över egenskaper som den gäller, så som standard px enheter kommer att konverteras till rem när den används på:

  • font
  • textstorlek
  • radavstånd
  • teckenavstånd

Du kan lägga till extra egenskaper till den här vita listan genom att ställa in en prop_white_list alternativ. Uppdatera din Gulpfile eller Gruntfile för att lägga till bredd egendom som så:

/ * Gulpfile * / pxtorem (prop_white_list: ['bredd', 'font', 'fontstorlek', 'linjehöjd', 'brevavstånd']) / * Gruntfile * / kräver ('postcss- pxtorem ") (prop_white_list: ['width', 'font', 'fontstorlek', 'linjehöjd', 'brevavstånd']),

Lägg nu till följande kod i din "src / style.css" -fil så att vi kan testa konverteringsprocessen:

.convert_this width: 500px; typsnittstorlek: 18px; 

Kompilera din fil och i din "dest / style.css" -fil ska du nu se den resulterande rem värden:

.convert_this width: 31.25rem; fontstorlek: 1.125rem; 

Läs mer om postcss-pxtorem på: https://github.com/cuth/postcss-pxtorem

Skapa en RTL-version av ditt stilark

Om du är catering till en global publik kan du behöva ge stöd för skript som läses från höger till vänster i stället för vänster till höger, till exempel arabiska och hebreiska. När orienteringen av skriptet vänds, bör också layouten på din webbplats så att hela designen är meningsfull för dem som tittar på höger sida av skärmen först.

Rtlcss-plugin av Mohammad Younes gör processen att skapa en rätt till vänster layout mycket enklare, eftersom den automatiskt kan skanna ditt stilark och konvertera orienteringen, byta ordet "vänster" för "rätt" och vice versa.

Detta plugin fungerar faktiskt lite annorlunda än andra PostCSS-plugins, eftersom vi inte kan lägga till det i vårt processorer array. Istället under installationen installerade vi Gulp and Grunt-plugins för rtlcss, och vi ska ställa in separata uppgifter för att utföra det.

Om du använder Gulp, lägg till den här koden i din Gulpfile:

gulp.task ('rtl', funktion () return gulp.src ('./ dest / style.css') .pipe (rtlcss ()) .pipe (rename (suffix: '-rtl')). rör (gulp.dest ('./ dest')););

Om du använder Grunt, lägg till den här raden efter din befintliga grunt.loadNpmTasks linje:

grunt.loadNpmTasks ( 'grunt-rtlcss');

Lägg sedan till ett komma , efter din postcss uppgift och klistra in i det här nya rtlcss uppgift:

rtlcss: 'default': dest: 'dest / style-rtl.css', src: 'dest / style.css'

Nu, om du använder Gulp kör kommandot gulp rtl, och om du använder Grunt kör kommandot grunt rtlcss för att skapa ett höger mot vänster stilark med namnet "style-rtl.css" i din "dest" -mapp.

Redigera din "dest / index.html" -fil för att ladda "style-rtl.css" istället för "style.css", uppdatera din webbplats och du bör se din layout har blivit vänd runt:

Du kommer märka att texten fortfarande är vänsterjusterad, men det här kan enkelt lösas genom att bara lägga till text-align: left; i ditt standardstilark, vilken rtlcss konverterar till textjustera: höger;.

Läs mer om rtlcss och dess Gulp and Grunt motsvarigheter på:

  • https://github.com/MohammadYounes/rtlcss
  • https://github.com/jjlharrison/gulp-rtlcss
  • https://github.com/MohammadYounes/grunt-rtlcss

Skapa en stilguide

Postcss-style-guide plugin är ett fantastiskt verktyg skapat av Masaaki Morishita. Det låter dig skapa en styleguide automatiskt baserat på ditt stilark. Allt du behöver göra är att lägga till några kommentarer till din CSS, och dessa kommentarer kommer att analyseras som Markdown och brukade fylla i din styleguide.

Det första vi ska göra är att konfigurera ett par alternativ för vår styleguide. Vi ska ställa in namnet på vårt projekt så att det kan visas i sidledet på styleguiden, och vi ska också använda ett eget tema med namnet 1 kolumn.

För att installera det anpassade temat vi använder till ditt projekt, kör kommandot:

npm installera psg-theme-1column --save-dev

Uppdatera nu din Gulpfile eller Gruntfile för att skicka ett namn och tema alternativ enligt följande:

/ * Gulpfile * / styleGuide (namn: 'Auto Style Guide', tema: '1column') / * Gruntfile * / kräver ('postcss-style-guide') (namn: 'Auto Style Guide' '1 kolumn')

Hur postcss-styleguide fungerar är att det kommer att leta efter dina kommentarer i ditt stylesheet och vända var och en som den finner i en styleguide-post. Det antar att någon kommentar rör den CSS som följer den, hela vägen till en annan kommentar eller slutet av dokumentet.

Av den anledningen ska alla CSS som du vill visa upp i din styleguide flyttas längst ner i ditt stilark. Vi kommer att få våra färgade kakel fram i styleguiden, liksom en h1 element, så vi behöver dem båda för att vara i slutet av vårt dokument.

Börja med att flytta alla klasser som påverkar våra plattor längst ner i ditt stylesheet; det är .bricka klass och fem .kakel: n: te-of-typ () stilar. Lägg sedan till en liten kod för att kontrollera h1 element så att botten av ditt stilark ser ut så här (the .kakel: n: te-of-typ () stilar visas inte för att spara utrymme):

h1 font-size: 42px;  .tile lost-column: 1/5; vaddering: 3,75rem 1,618rem; text-align: center; fontstorlek: 1,25rem; färg vit; 

Nu kan vi lägga till några kommentarer för att beskriva dessa stilar. Varje html som läggs till i dessa kommentarer kommer att göras som html i styleguiden, och CSS som följer en kommentar kommer att visas i en bildskärm.

Lägg till några kommentarer i ditt stilark som beskriver h1 stil och .bricka klass och med några exempel html så slutar du med följande:

/ * Detta är h1-stilen 

Rubrik 1

* / h1 fontstorlek: 42px; / * Dessa använder .tile-klassen
Detta är en kakel
Detta är en kakel
Detta är en kakel
Detta är en kakel
Detta är en kakel
* / .tile förlorad kolumn: 1/5; vaddering: 3,75rem 1,618rem; text-align: center; fontstorlek: 1,25rem; färg vit;

Kompilera nu ditt stilark, kolla in projektets rotmapp och öppna filen "styleguide.html" du hittar i en webbläsare:

Hej presto, omedelbar styleguide!

För tillfället ser det lite funky ut eftersom det har tagit upp den gröna kroppens bakgrundsfärg från vårt stilark. Vad vi vill är att vårt innehåll ska vara på en vit bakgrund, och vi kan få styleguiden att hämta någon annan kod från vårt stilark så att det händer.

Den centrala delen av denna styleguide mall använder a sektion element, så ovan den kommentar som beskriver din h1 element, lägg till den här koden:

avsnitt padding: 1rem; bakgrund: vit; 

Kompilera din kod, uppdatera din styleguide, så ser du att den nu använder sig av den stil som vi just lagt till sektion element och ser så här ut:

Det är mycket bättre.

Läs mer om postcss-style-guide på: https://github.com/morishitter/postcss-style-guide

Låt oss läsa om

Sammanfattar allt vi har täckt ovan:

  • Lost plugin gör att du kan skapa flexibla nät med bara några egenskaper, med mycket extra funktionalitet tillgängligt även om du behöver det.
  • Postcss-colorblind-plugin kan du själv se hur dina mönster ser ut till personer med någon av åtta olika typer av färgblindhet.
  • Postcss-pxtorem-plugin kan du skriva kod med px enheter men har automatiskt konverterats till rem enheter under bearbetningen.
  • Rtlcss-plugin genererar automatiskt höger till vänster stilark genom att skanna din kod för ordet "right" och ersätta det med "vänster" och vice versa.
  • Plugin för postcss-stil-guide genererar automatiskt en styleguide, baserat på kommentarer som läggs till i ditt stilark.

Kommer nästa: Gör ditt eget plugin

I nästa och sista installationen av denna PostCSS Deep Dive lär du dig att låsa upp en av de största fördelarna som PostCSS erbjuder; det är möjligheten att använda det för att skapa vilken typ av funktionalitet du vill ha.

Du lär dig hur du skapar ditt eget grundläggande plugin, och för det förhoppningsvis fortsätter du med att göra många fler plugins för vad som helst som kan uppstå i framtiden.

Jag ser dig i den slutliga handledningen!