Utilizarea PostCSS Împreună cu Sass, Stylus sau LESS

Dacă sunteți interesat să utilizați PostCSS, dar totuși vă placeți preprocesorul preferat, nu vă faceți griji. Nu trebuie să faceți o alegere între cele două - le puteți folosi chiar alături de ele.

Există mai multe pluginuri PostCSS care complimentează preprocesoarele foarte bine, deoarece ele adaugă funcționalitate în fluxul de lucru care ar fi altfel imposibilă sau cel puțin dificil, folosind doar un preprocesor.

Vom atinge unele dintre aceste plugin-uri complementare, apoi vom trece prin ghidurile de configurare pentru a vă arăta cum să utilizați PostCSS unul lângă celălalt cu Sass, Stylus sau LESS.

De ce să utilizați ambele?

Înainte să intrăm Cum puteți folosi preprocesoare împreună cu PostCSS, vom vorbi puțin despre asta De ce ai vrea. Răspunsul scurt este: să obțină acces la pluginurile PostCSS a căror funcționalitate complimentează preprocesoarele. Pentru a vă arăta de ce merită acest lucru, vom trece peste o mână de plugin-uri care funcționează foarte bine cu preprocesoarele.

Notă: este posibil să se obțină rezultate finale similare prin utilizarea mixinelor și a funcțiilor în codul preprocesor obișnuit, dar cu fiecare dintre exemplele de mai jos procesul este tratat automat. Vă scrieți în mod normal CSS-ul și plugin-urile se ocupă de toate pentru dvs., fără funcții de apelare, fără amestecuri de inclus sau argumente pentru a trece.

autoprefixer

Au fost multe combinații de preprocesoare scrise pentru a se ocupa de introducerea prefixelor furnizorilor. De exemplu, s-ar fi putut folosi @ includeți dimensiunea cutiei (frontală); de la biblioteca Compass la furnizor de ieșire prefixat box-dimensionare norme.

Problema de a se baza pe mixuri pentru prefixele furnizorilor este:

  1. Mai întâi trebuie să cunoașteți un prefix pentru proprietăți înainte de a putea decide să implementați un mixin pentru acesta.
  2. Trebuie să cunoașteți numele amestecului asociat și cum să îl utilizați.
  3. Trebuie să păstrați filele când prefixele furnizorilor nu mai sunt necesare pentru fiecare proprietate (știu că am prefixat box-dimensionare pentru mult timp ...)

Autoprefixer elimină aceste preocupări prin gestionarea automată a procesului de prefixare a vânzătorului. Autoprefixer scanează dvs. CSS, verifică-l împotriva datelor de la CanIUse.com, apoi adaugă prefixele necesare.

Citiți mai multe despre Autoprefixer la: https://github.com/postcss/autoprefixer

rtlcss

Generarea foilor de stil implicite și RTL (de la dreapta la stânga) dintr-o singură sursă este, de asemenea, ceva care a fost făcut cu preprocesoare, însă de obicei necesită utilizarea mai multor mixuri și / sau interpolarea variabilelor în codul dvs. în mai multe locuri. De exemplu, mai degrabă decât scris margin-stânga: 1rem; este posibil să aveți nevoie să scrieți margine - # dir: 1rem; sau @ include margin-left (1rem);.

Cu ajutorul pluginului rtlcss de către Mohammad Younes, nu trebuie să utilizați mixuri sau interpolare variabilă, ci doar să vă scrieți foaia de stil ca în mod normal și pluginul să găsească toate instanțele sau "dreapta" sau "stânga" și să le schimbați. Asa de margin-stânga: 1rem; devine automat margin-dreapta: 1rem; fără să trebuiască să scrieți vreun cod special pentru a face acest lucru.

Citiți mai multe despre rtlcss la: https://github.com/MohammadYounes/rtlcss

-Postcss colorblind

Cu pluginul postcss-colorblind de Brian Holt puteți genera în mod automat diferite versiuni ale foii de stil, care vă oferă o experiență de primă mână despre ceea ce ar arăta designul dvs. pentru o persoană cu orbire colorată. Acesta poate simula opt tipuri diferite de colorblindness, ajutându-vă să obțineți o înțelegere foarte solidă pe cât de accesibile sunt schemele de culori.

Acesta este un exemplu de funcționalitate pe care într-adevăr trebuie să o deplasați la PostCSS pentru a găsi, deoarece ar fi foarte dificil pentru preprocesori să realizeze.

Citiți mai multe despre postcss-colorblind la: https://github.com/btholt/postcss-colorblind

postcss-svgo

Plug-in postcss-svgo de Ben Briggs vă poate oferi optimizarea mâinilor pentru codul SVG inline. De exemplu:

fundal: url ('date: image / svg + xml; utf-8,„);

Poate fi fiert la acest lucru, mai puțin de jumătate din cod:

fundal: url ('date: image / svg + xml; utf-8,„);

Citiți mai multe despre postcss-svgo la: https://github.com/ben-eb/postcss-svgo

cssnano

În timp ce preprocesorii pot elimina spațiul alb și comentariile, pachetul cssnano de Ben Briggs poate efectua tot felul de optimizări deasupra acestor două etape. Acoperim cssnano în detaliu în tutorialul Minification and Optimization.

Citiți mai multe despre cssnano la: https://github.com/ben-eb/cssnano

postcss-font-magician

Plugin-ul postcss-font-magician de Jonathan Neal face adăugarea de fonturi personalizate la fel de ușor ca utilizarea fonturilor obișnuite. Nu este nevoie să folosiți mixuri, ci doar să adăugați a familie de fonturi așa cum ați proceda în mod normal:

corp font-family: "Alice"; 

... și plugin-ul se va ocupa de plin @ Font-face generație pentru tine:

@ font-face font-family: "Alice"; font-style: normal; greutatea fontului: 400; src: local ("Alice"), local ("Alice-Regular"), url ("http://fonts.gstatic.com/s/alice/v7/sZyKh5NKrCk1xkCk_F1S8A.eot?") format ("eot") , url ("http://fonts.gstatic.com/s/alice/v7/l5RFQT5MQiajQkFxjDLySg.woff2") format ("woff2"), url ("http://fonts.gstatic.com/s/alice/v7 (Format "") format ("woff"), format url ("http://fonts.gstatic.com/s/alice/v7/acf9XsUhgp1k2j79ATk2cw.ttf") format font-family: "Alice"; 

Citiți mai multe despre postcss-font-magician la: https://github.com/jonathantneal/postcss-font-magician

Setarea proiectului

Există șase ghiduri de configurare de mai jos: un ghid Gulp și Grunt pentru fiecare preprocesor major. Nu este nevoie să citiți toate cele șase, puteți să treceți direct la ghid pentru preprocesorul preferat și să creați un instrument. Dacă nu sunteți sigur dacă utilizați Gulp sau Grunt, Gulp este cu siguranță cea mai simplă alegere pentru acest tutorial.

Pentru oricare dintre ghidurile pe care le urmați, va trebui să începeți cu un proiect Gulp sau Grunt gol. Puteți citi despre cum să configurați proiectele Gulp sau Grunt pentru PostCSS în tutorialele anterioare

  • PostCSS Ghid de pornire rapidă: Gulp Setup sau
  • PostCSS Ghid de pornire rapidă: Configurarea gruntului

respectiv.

Dacă nu doriți să configurați manual proiectul de la zero, puteți să descărcați fișierele sursă atașate acestui tutorial și să extrageți proiectul Gulp sau Gruntul furnizat într-un dosar gol al proiectului. Apoi, cu un terminal sau un prompt de comandă indicat la dosarul de executare a comenzii npm install.

Instalați pluginurile PostCSS în proiectul dvs.

După ce configurați un proiect gol pentru una dintre secțiunile de mai jos, va trebui, de asemenea, să instalați două pluginuri PostCSS: Autoprefixer și cssnano. Puteți face acest lucru executând comanda:

npm instalează autoprefixer cssnano --save-dev

Vom folosi aceste două plugin-uri pentru a testa că PostCSS și preprocesorul dvs. lucrează împreună cum era de așteptat.

Preproces înaintea PostCSS

Prima regulă de utilizare a unui preprocesor cu PostCSS este că ar trebui să rulați întotdeauna preprocesorul respectiv primul. Acest lucru se datorează faptului că nu doriți să aveți în codul dvs. o sintaxă specifică de preprocesor, care ar putea sufoca un plugin PostCSS și, de asemenea, nu doriți ca PostCSS să facă modificări în codul dvs., ceea ce ar putea împiedica executarea unui preprocesor conform așteptărilor.

Pluginurile PostCSS și "Codul de testare PostCSS"

Pentru fiecare dintre preprocesoarele pe care le-am setat, le vom rula pe autoprefixer și cssnano după ce preprocesorul și-a terminat compilația. În fiecare caz, va trebui să adăugăm un cod de testare pentru aceste două plugin-uri pentru a funcționa.

Pentru a salva repetarea aceluiași cod în fiecare secțiune de mai jos, când vedeți o instrucțiune care vă spune să adăugați codul de testare PostCSS, adăugați-l la fișierul sursă preprocesor pe care lucrați:

.css_nano, .css_nano + p, [class * = "css_nano"], .css_nano / * cssnano va elimina acest comentariu * / display: flex; font-weight: normal; margin-top: 1rem; marginea inferioară: 2rem; margin-stânga: 1.5rem; margin-dreapta: 2.5rem; font-weight: normal; padding: 1.75rem; lățime: calc (50rem - (2 * 1.75rem)); 

Dacă reușiți, codul dvs. compilat va apărea în fiecare caz ca:

.css_nano, .css_nano + p, [class * = css_nano] display: -webkit-box; display: -webkit-flex; greutate: 400; padding: 1.75rem; lățime: 46.5rem

Notă: utilizările flexbox au fost autoprefixate, iar cssnano a efectuat mai multe optimizări ale codului. Folosim același cod pentru a testa cssnano așa cum am făcut-o în tutorialul precedent pentru miniere și optimizare, așa că vă rugăm să consultați secțiunea "cssnano" pentru detalii despre optimizările efectuate.

1. Sass + PostCSS

Deoarece lucrați deja cu Node.js pentru a rula Gulp sau Grunt și PostCSS, cel mai simplu mod de a utiliza Sass alături de ei este să o faceți prin LibSass. Acest lucru este, de asemenea, considerabil mai rapid decât Ruby Sass. Vom implementa LibSass prin modulele gulp-sass sau grunt-contrib-sass.

Configurați prin Gulp

Instalați modulul gulp-sass în proiectul dvs. cu npm instalează gulp-sass - saves-dev.

Acum vă puteți actualiza Gulpfile la următoarele:

var gulp = necesită ("gulp"); var postcss = necesită ("gulp-postcss"); var sass = necesită ("gulp-sass"); var autoprefixer = necesită ("autoprefixer"); var cssnano = cer ('cssnano'); gulp.task ('css', functie () var procesoare = [autoprefixer, cssnano]; return gulp.src ('./ src / * .sss') .pipe (sass .logError)) .pipe (postcss (procesoare)) .pipe (gulp.dest ('./ dest')););

Să distrugem ceea ce am schimbat de la standardul de pornire Gulpfile:

  • Variabile adăugate pentru încărcare înghițitură-Sass, autoprefixer și cssnano
  • Adăugat autoprefixer și cssnano variabilele la procesoare mulțime
  • Editat extensia de fișier din fișierul sursă pe care îl compilam la ".scss" în loc de ".css"
  • A fost adăugat un nou pipe () linia, .pipe (sass () ... , pentru a procesa Sass, fiind sigur de a le plasa înainte de linia care procesează PostCSS

Acum putem efectua câteva teste pentru a ne asigura că atât Sass, cât și PostCSS compilează așa cum era de așteptat.

Testați Preprocesorul

Redenumiți fișierul "src / style.css" existent la "src / style.scss" și adăugați următorul cod de testare:

$ font-stack: Helvetica, sans-serif; $ primar-culoare: # 333; corp font: 100% font-stack; culoare: $ primar-culoare; 

Alerga gulp css și ar trebui să vedeți un nou fișier "style.css" care apare în dosarul "dest" cu conținutul:

corp font: 100% Helvetica, sans-serif; culoare: # 333;  

Testați PostCSS

Acum, adăugați codul de testare PostCSS furnizat anterior în acest tutorial în fișierul "style.scss".

Rulați-vă gulp css comanda și ar trebui să vedeți codul corect care apare în fișierul "dest / style.css":

corp font: 100% Helvetica, sans-serif; culoare: # 333 .css_nano, .css_nano + p, [class * = css_nano] display: -webkit-box; -flexbox; afișare: flex; margine: 1rem 2.5rem 2rem 1.5rem; greutate font: 400; umplutură: 1.75rem; lățime: 46.5rem

Setup via Grunt

În noul proiect Grunt, instalați modulul grunt-contrib-sass cu npm instalează grunt-contrib-sass.

Apoi adăugați a grunt.loadNpmTasks () funcția pentru aceasta sub cea existentă pe care o aveți pentru PostCSS:

 grunt.loadNpmTasks ( 'groh-postcss'); grunt.loadNpmTasks ( 'groh-contrib-sass');

Veți avea nevoie să configurați o nouă sarcină pentru a procesa Sass. După această linie:

 grunt.initConfig (

... dar înainte de existența postcss task, adăugați acest cod:

 sass: dist: fișiere: 'src / style.css': 'src / style.scss',

Acum vom înregistra o sarcină care va rula Sass și apoi PostCSS. După grunt.loadNpmTasks () funcție pe care tocmai ați introdus-o, adăugați:

grunt.registerTask ('css', ['sass', 'postcss']);

Testați Preprocesorul

Pentru a testa configurarea, redenumiți fișierul "src / style.css" existent la "style.scss". Adăugați acest cod Sass la acesta:

$ font-stack: Helvetica, sans-serif; $ primar-culoare: # 333; corp font: 100% font-stack; culoare: $ primar-culoare; 

Rulați comanda grunt css și ar trebui să vedeți un nou fișier creat în folderul "dest" numit "style.css" și conținând acest cod:

corp font: 100% Helvetica, sans-serif; culoare: # 333; 

Configurați PostCSS

Acum vom primi pluginurile Autoprefixer și cssnano. Actualizați-vă Gruntfile procesoare array la următoarele:

 procesoare: [necesită ('autoprefixer') (), necesită ('cssnano') ()]

Testați PostCSS

Adăugați codul de test PostCSS în fișierul "style.scss", executați comanda grunt css din nou și ar trebui să găsești că fișierul "dest / style.css" recompilat conține acum codul corect corectat și optimizat.

2. Stylus + PostCSS

Stylus și PostCSS funcționează deosebit de bine datorită creării pachetului PostStylus de către Sean King, care combină prelucrarea atât a Stylus cât și a PostCSS. Dacă sunteți dezvoltator Stylus, puteți să adăugați PostStylus în procesul dvs. de compilare și să aveți imediat acces la utilizarea pluginurilor PostCSS ca parte a fluxului dvs. de lucru.

PostStylus: https://github.com/seaneking/poststylus

Configurați prin Gulp

Dacă utilizați Gulpfile premade de la proiectul starter, veți observa că utilizează pluginul gulp-postcss. Acesta este de fapt doar acolo unde este necesar pentru procesele de configurare Sass și LESS, dar pentru Stylus nu vom avea nevoie de el deoarece folosim PostStylus ca compilator.

Îl puteți elimina din proiect cu ajutorul npm dezinstalați gulp-postcss - saves-dev, și ștergeți această linie din Gulpfile:

var postcss = necesită ("gulp-postcss");

Acum putem instala cele două pluginuri de care avem nevoie pentru compilarea Stylus și PostCSS, executând comanda:

npm instalează gulp-stylus poststylus -save-dev

Actualizați-vă Gulpfile pentru a deveni:

var gulp = necesită ("gulp"); var stylus = necesită ("gulp-stylus"); var poststylus = necesită ("poststylus"); var autoprefixer = necesită ("autoprefixer"); var cssnano = cer ('cssnano'); gulp.task ('css', function () var procesoare = [autoprefixer, cssnano]; retur gulp.src ('./ src / *. stil') .pipe (stylus (use: [poststylus (processors)] )) .pipe (gulp.dest ('./ dest')););

Iată ce am făcut mai sus:

  • Variabile adăugate pentru încărcare înghițitură-stylus, poststylus, autoprefixer și cssnano
  • Adăugat autoprefixer și cssnano variabilele la procesoare mulțime
  • Editat extensia de fișier din fișierul sursă pe care îl compilam la ".styl" în loc de ".css"
  • Eliminat .pipe () line care a citit .pipe (postcss (procesoare))
  • Înlocuit-o cu .pipe (stylus (... , pentru a seta modulele de tip gulp-stylus și poststylus să se ocupe de compilația noastră

Testați Preprocesorul

Acum suntem gata să testăm compilația. În dosarul "src", redenumiți "style.css" la "style.styl" și adăugați acest cod de test Stylus:

$ font-stack = Helvetica, sans-serif $ primar-color = # 333 caractere corp: 100% $ font-stack culoare: $ primar-color

Pornește gulp css comanda și ar trebui să vedeți un fișier "style.css" care apare în dosarul "dest" cu acest conținut:

corp font: 100% Helvetica, sans-serif; culoare: # 333; 

Testați PostCSS

Adăugați codul de test PostCSS furnizat anterior în fișierul dvs. "style.styl", asigurându-vă că numai indicele filei sunt în codul lipit, nu în spații.

Recompilați și verificați dacă aveți fișierul "dest / style.css" corespunzător.

corp font: 100% Helvetica, sans-serif; culoare: # 333 .css_nano, .css_nano + p, [class * = css_nano] display: -webkit-box; -flexbox; afișare: flex; margine: 1rem 2.5rem 2rem 1.5rem; greutate font: 400; umplutură: 1.75rem; lățime: 46.5rem

Setup via Grunt

Ca și în cazul proiectului Gulp pentru Stylus, compilatorul implicit PostCSS care vine cu proiectul de pornire nu este necesar, existând doar pentru procesele de configurare Sass și LESS. Îl puteți elimina din proiect cu ajutorul npm dezinstala grunt-postcss -save-dev.

Acum putem instala grunt-contrib-stylus și poststylus cu comanda:

npm instalează grunt-contrib-stylus poststylus - salvează-dev

Nu vom mai folosi zgomotul postcss, deci localizați această linie:

 grunt.loadNpmTasks ( 'groh-postcss');

Și înlocuiți-l cu:

 grunt.loadNpmTasks ( 'groh-contrib-stilou');

Dat fiind că nu folosim postcss, înseamnă că nu mai avem nevoie de ea postcss sarcină pe care am definit-o înăuntru grunt.initConfig (...);. Ștergeți configul de sarcină și înlocuiți-l cu acest nou stylus sarcină:

 stylus: compile: opțiuni: , fișiere: 'dest / style.css': 'src / style.styl'

Testați Preprocesorul

Acum suntem gata să testăm compilația. În dosarul "src", redenumiți "style.css" la "style.styl" și adăugați acest cod de test Stylus:

$ font-stack = Helvetica, sans-serif $ primar-color = # 333 caractere corp: 100% $ font-stack culoare: $ primar-color

Rulați comanda grunduit stylus și ar trebui să vedeți un fișier "style.css" care apare în dosarul "dest" cu acest conținut:

corp font: 100% Helvetica, sans-serif; culoare: # 333

Configurați PostCSS

Pentru a adăuga pluginurile noastre PostCSS în procesul de compilare, trebuie mai întâi să adăugăm acest cod la partea superioară a Gruntfile noastre, deasupra module.exports ... linia:

var poststylus = funcția () returnați cerința ('poststylus') (['autoprefixer', 'cssnano']);

Aici veți încărca toate pluginurile PostCSS pe care doriți să le utilizați, mai degrabă decât într-un procesoare așa cum veți fi obișnuiți cu alte tutoriale.

Apoi găsiți Opțiuni obiect în interiorul tastei stiloului și actualizați-l la următoarele:

 opțiuni: use: [poststylus],

Acest lucru spune grunt-contrib-stylus de a folosi poststylus în timpul compilării, și plugin-urile sale împreună cu ea.

Testați PostCSS

Adăugați "codul de test PostCSS" în fișierul "src / style.styl", executați grunduit stylus, și ar trebui să vedeți următorul conținut scris în fișierul dvs. "dest / style.css":

corp font: 100% Helvetica, sans-serif; culoare: # 333 .css_nano, .css_nano + p, [class * = css_nano] display: -webkit-box; -flexbox; afișare: flex; margine: 1rem 2.5rem 2rem 1.5rem; greutate font: 400; umplutură: 1.75rem; lățime: 46.5rem

3. LESS + PostCSS

Configurați prin Gulp

Instalați modulul fără gulp în proiectul dvs. cu npm instalează gulp-less -save-dev.

Acum vă puteți actualiza Gulpfile la următoarele:

var gulp = necesită ("gulp"); var postcss = necesită ("gulp-postcss"); var mai puțin = necesită ("gulp-less"); var autoprefixer = necesită ("autoprefixer"); var cssnano = cer ('cssnano'); gulp.task ('css', function () var procesoare = [autoprefixer, cssnano]; return gulp.src ('./ src / *. less') .pipe (less () ) .pipe (gulp.dest ('./ dest')););

Să distrugem ceea ce am schimbat de la standardul de pornire Gulpfile:

  • Variabile adăugate pentru încărcare înghiți dintr-mai puțin, autoprefixer și cssnano
  • Adăugat autoprefixer și cssnano variabilele la procesoare mulțime
  • Editat extensia de fișier din fișierul sursă pe care îl compilam la ".less" în loc de ".css"
  • Adăugat .țeavă (mai puțin ()) pentru a procesa LESS, fiind sigur că o plasezi înainte de linia care procesează PostCSS

Testați Preprocesorul

Acum putem efectua câteva teste pentru a ne asigura că atât LESS, cât și PostCSS se compun conform așteptărilor.

Redenumiți fișierul "src / style.css" existent la "src / style.less" și adăugați următorul cod de testare:

@ font-stack: Helvetica, sans-serif; @ primar-culoare: # 333; corp font: 100% @ font-stack; culoarea: @ culoarea primară; 

Alerga gulp css și ar trebui să vedeți un nou fișier "style.css" care apare în dosarul "dest" cu conținutul:

corp font: 100% Helvetica, sans-serif; culoare: # 333

Testați PostCSS

Acum, la fișierul "stil.less" adăugați codul de testare PostCSS furnizat mai devreme în acest tutorial.

Rulați-vă gulp css comanda și ar trebui să vedeți codul corect care apare acum în fișierul "dest / style.css".

corp font: 100% Helvetica, sans-serif; culoare: # 333 .css_nano, .css_nano + p, [class * = css_nano] display: -webkit-box; -flexbox; afișare: flex; margine: 1rem 2.5rem 2rem 1.5rem; greutate font: 400; umplutură: 1.75rem; lățime: 46.5rem

Setup via Grunt

În noul proiect Grunt, instalați modulul grunt-contrib-less cu npm instalează grunt-contrib-less, apoi adăugați a grunt.loadNpmTasks () funcția pentru aceasta sub cea existentă pe care o aveți pentru PostCSS:

 grunt.loadNpmTasks ( 'groh-postcss'); grunt.loadNpmTasks ( 'groh-contrib mai puțin');

Veți avea nevoie să configurați o nouă sarcină pentru procesarea mai puțin. După această linie:

 grunt.initConfig (

... dar înainte de existența postcss task, adăugați acest cod:

 mai puțin: producție: fișiere: 'src / style.css': 'src / style.less',

Acum vom înregistra o sarcină, pentru a rula mai puțin și apoi PostCSS. După grunt.loadNpmTasks () funcție pe care tocmai ați introdus-o, adăugați:

 grunt.registerTask ("css", ['less', 'postcss']);

Testați Preprocesorul

Pentru a testa configurarea, redenumiți fișierul "src / style.css" "style.less". Adăugați acest cod LOSĂ la acesta:

@ font-stack: Helvetica, sans-serif; @ primar-culoare: # 333; corp font: 100% @ font-stack; culoarea: @ culoarea primară; 

Rulați comanda grunt css și ar trebui să vedeți un nou fișier creat în folderul "dest" numit "style.css" și conținând acest cod:

corp font: 100% Helvetica, sans-serif; culoare: # 333333; 

Configurați PostCSS

Acum vom adăuga pluginurile noastre PostCSS în fluxul de compilare. Actualizați-vă Gruntfile procesoare array la următoarele:

 procesoare: [necesită ('autoprefixer') (), necesită ('cssnano') ()]

Testați PostCSS

Adăugați codul de test PostCSS în fișierul "stil.less", executați comanda grunt css din nou și ar trebui să găsești că fișierul "dest / style.css" recompilat conține acum codul corect corectat și optimizat:

corp font: 100% Helvetica, sans-serif; culoare: # 333 .css_nano, .css_nano + p, [class * = css_nano] display: -webkit-box; -flexbox; afișare: flex; margine: 1rem 2.5rem 2rem 1.5rem; greutate font: 400; umplutură: 1.75rem; lățime: 46.5rem

În Următorul tutorial

În continuare, vom examina ceva ce ați putea lua în considerare aproape un tip diferit de preprocesare - folosind PostCSS pentru a genera automat clase CSS compatibile BEM / SUIT. Acest proces face ca dezvoltarea BEM / SUIT să fie mult mai ușor de urmărit, ca să nu mai vorbim de eficiență.

Ne vedem în tutorialul următor!